Trong Java 7, Java cung cấp trình biên dịch được cải tiến, đủ thông minh để suy luận tạo đối tượng Generic. Bây giờ, bạn có thể thay thế các đối số kiểu dữ liệu cụ thể bằng một tập rỗng các tham số kiểu (<>). Cặp dấu ngoặc nhọn này được gọi là viên kim cương.
Cách tiếp cận sau được sử dụng trong Java 6 và phiên bản trước.
List<Integer> list = new List<Integer>();
Bây giờ, bạn có thể sử dụng cách tiếp cận mới sau đây được giới thiệu trong Java 7.
// ở đây, chúng ta chỉ cần sử dụng dấu kim cương List<Integer> list = new List<>();
Nội dung chính
Ví dụ kiểu suy luận cho việc tạo đối tượng Generic
package vn.kienthuclaptrinh; import java.util.ArrayList; import java.util.List; public class TypeInference1 { public static void main(String[] args) { // trong java 6 va cac phien ban truoc System.out.println("Java 6:"); List<Integer> list = new ArrayList<Integer>(); list.add(10); list.add(15); for (Integer element : list) { System.out.println(element); } // trong java 7 System.out.println("Java 7:"); List<Integer> list2 = new ArrayList<>(); list2.add(10); list2.add(20); for (Integer element : list2) { System.out.println(element); } } }
Kết quả:
Java 6: 10 15 Java 7: 10 20
Kiểu suy luận và Generic Constructor
Bạn có thể tạo constructor chung trong cả hai lớp generic và non-generic. Trong ví dụ sau, chúng sẽ tạo ra một Constructor kiểu generic.
package vn.kienthuclaptrinh; class GenericClass<X> { <T> GenericClass(T t) { System.out.println(t); } } public class TypeInference2 { public static void main(String[] args) { GenericClass<String> gc2 = new GenericClass<>("Hello"); } }
Kết quả:
Hello