
实质上,推断过程只是将变量赋予其初始化程序表达式的类型。一些细微之处:
- 初始化程序没有目标类型(因为我们尚未推断出它)。需要这种类型的多边形表达式(例如 lambdas ,方法引用和数组初始化器)将触发错误。
由于Lambda表达式本身没有类型,因此无法针对进行推断
var。
…同样,可以设置默认规则。
当然,您可以想出一种方法来解决此限制。为何开发人员决定不这样做,实际上取决于猜测,除非参与决策的人可以在这里回答。无论如何,如果您有兴趣,可以在以下openjdk邮件列表中查询:http
:
//mail.openjdk.java.net/mailman/listinfo
如果我猜到了,他们可能不想将lambda推断
var与一组特定的功能接口类型相关联,这将排除任何第三方功能接口类型。更好的解决方案是推断一个通用函数类型(即
(Apple)->boolean),然后将其转换为兼容的功能接口类型。但是JVM没有这种函数类型,并且在创建lambda表达式的项目期间已经做出了不实现它们的决定。同样,如果您对具体原因感兴趣,请询问开发人员。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)