首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未编译Java 7的钻石

未编译Java 7的钻石
EN

Stack Overflow用户
提问于 2015-10-28 15:09:00
回答 1查看 6.7K关注 0票数 6

我已经定义了以下泛型类,但是当我在Class对象上使用它时,它不会编译。构造函数不接受其他对象

代码语言:javascript
复制
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);

}

错误消息:

代码语言:javascript
复制
incompatible types: Pair<String,Integer> cannot be converted to Pair<Object,Object>

为什么第一个没有编译,第二个没有编译?

编辑:在Java 8上编译的

EN

回答 1

Stack Overflow用户

发布于 2015-10-28 15:29:11

您的代码失败是因为java 7编译器找不到正确的推断类型;另一方面,java 8会编译并正常工作。(tl;dr: java 7并不适用于所有钻石,这一点在java 8中得到了改进)

JEP 101:广义目标类型推理

平滑地扩展了方法类型推理的范围,以支持(i)方法上下文中的推理和(ii)链式调用中的推理。

这意味着java 8可以使用菱形操作符来确定调用的类型。

编辑:看上去像是有人在线程中打败了我,并且解释得比我更清楚;所以来看看吧!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33394701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档