
严格根据规范,
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中编译。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)