我已经定义了以下泛型类,但是当我在Class对象上使用它时,它不会编译。构造函数不接受其他对象
class Pair<T,V> {
T one;
V two;
public Pair(T one, V two) {
this.one = one;
this.two = two;
}
}
public static void main(String[] args) {
String hamza = "Hamza";
Integer soufiane = 0;
Pair<Object,Object> pairOne = new Pair<>(hamza, soufiane);
Pair<Object,Object> pairTwo = new Pair<Object, Object>(soufiane, hamza);
}错误消息:
incompatible types: Pair<String,Integer> cannot be converted to Pair<Object,Object>为什么第一个没有编译,第二个没有编译?
编辑:在Java 8上编译的
发布于 2015-10-28 15:29:11
您的代码失败是因为java 7编译器找不到正确的推断类型;另一方面,java 8会编译并正常工作。(tl;dr: java 7并不适用于所有钻石,这一点在java 8中得到了改进)
平滑地扩展了方法类型推理的范围,以支持(i)方法上下文中的推理和(ii)链式调用中的推理。
这意味着java 8可以使用菱形操作符来确定调用的类型。
编辑:看上去像是有人在线程中打败了我,并且解释得比我更清楚;所以来看看吧!
https://stackoverflow.com/questions/33394701
复制相似问题