本文概述
在Java 7中, Java提供了改进的编译器, 该编译器足够智能以推断通用实例的类型。现在, 你可以用一组空的类型参数(<>)替换类型参数。这对尖括号被非正式地称为菱形。
Java 6和更低版本中使用以下方法。
Ex. List<Integer> list = new List<Integer>();
现在, 你可以使用Java 7中引入的以下新方法。
Ex. List<Integer> list = new List<>(); // Here, we just used diamond
通用实例创建示例的类型推断
import java.util.List;
import java.util.ArrayList;
public class TypeInference {
public static void main(String[] args) {
// In Java 6 and earlier
List<Integer> list = new ArrayList<Integer>();
list.add(12);
for (Integer element : list) {
System.out.println(element);
}
// In Java 7
List<Integer> list2 = new ArrayList<>(); // Here, diamond is used
list2.add(12);
for (Integer element : list2) {
System.out.println(element);
}
}
}
输出:
12
12
类型推断和泛型构造函数
你可以在通用类和非通用类中创建通用构造函数。在下面的示例中, 我们创建了一个泛型类型构造函数。
class GenericClass<X> {
<T> GenericClass(T t) {
System.out.println(t);
}
}
public class TypeInference {
public static void main(String[] args) {
GenericClass<String>gc2 = new GenericClass<>("Hello");
}
}
输出:
Hello
评论前必须登录!
注册