在JDK 7中,类型推断比JDK 6更具限制性吗?

在JDK 7中,类型推断比JDK 6更具限制性吗?,第1张

在JDK 7中,类型推断比JDK 6更具限制性吗?

严格根据规范,

T
不能进行推断(根据15.12.2.7),因此应将其视为
Object

这可以看作是规范的失败。spec是这样推断的

R
:首先是约束
R :> BigDecimal
,其中
:>
means 是的超类型
。然后选择推理规则,
R=BigDecimal
因为它是满足约束的最具体的类型。

现在,由于

T:>R
,,
T:>BigDecimal
人们会认为这也应该产生
T=BigDecimal

不幸的是,推理规则没有考虑

T:>R
在内。没有约束
T
T
不能通过相同的原理来推断。

虽然很糟糕,但规格是规格。您的代码不应编译。Javac6在那里是错误的。

在Java 8中,推理规则有了很大的改进,使lambda表达式更易于使用。希望您的代码可以在Java 8中编译。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5140995.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-18
下一篇2022-11-17

发表评论

登录后才能评论

评论列表(0条)

    保存