我一直在完成Java Tutorial并且已经reading about generic type inference in JDK7。
我遇到了以下语法......
class MyClass<X> {
<T> MyClass(T t) {
// ...
}
}
MyClass<Integer> myObject = new <String`> MyClass<>("");
......这有点令人困惑。我理解'菱形'运算符以及如何根据上下文推断泛型类型。
我不确定你为什么要使用菱形运算符来推断传递给构造函数的类型,同时明确指定类型“String`”?我也不明白为什么要反击!
此外,以下是否存在差异?
MyClass<Integer> myObject1 = new <String> MyClass<>(""); // JDK7 only
MyClass<Integer> myObject2 = new MyClass<>(""); // JDK7 only
MyClass<Integer> myObject3 = new <String> MyClass<Integer>("");
答案 0 :(得分:2)
MyClass<Integer> myObject = new <String> MyClass<>("");
只是
MyClass<Integer> myObject = new <String> MyClass<Integer>("");
就是说,你是 1.创建MyClass&lt; Integer&gt;的实例 2.使用String作为类型参数调用构造函数:
<String> MyClass(String t) {
// ...
}
菱形运算符与构造函数无关,因为它不“推断传递给构造函数的类型”,但它推断传递给整个类的类型。
哦,我认为tutorial example中的反击可能是一个排版错误。 :)