为什么不能为Java中的var关键字分配一个lambda表达式?

为什么不能为Java中的var关键字分配一个lambda表达式?,第1张

为什么不能为Java中的var关键字分配一个lambda表达式

从局部变量类型推断JEP:

实质上,推断过程只是将变量赋予其初始化程序表达式的类型。一些细微之处:

  • 初始化程序没有目标类型(因为我们尚未推断出它)。需要这种类型的多边形表达式(例如 lambdas ,方法引用和数组初始化器)将触发错误。

由于Lambda表达式本身没有类型,因此无法针对进行推断

var


…同样,可以设置默认规则。

当然,您可以想出一种方法来解决此限制。为何开发人员决定不这样做,实际上取决于猜测,除非参与决策的人可以在这里回答。无论如何,如果您有兴趣,可以在以下openjdk邮件列表中查询:http
:
//mail.openjdk.java.net/mailman/listinfo

如果我猜到了,他们可能不想将lambda推断

var
与一组特定的功能接口类型相关联,这将排除任何第三方功能接口类型。更好的解决方案是推断一个通用函数类型(即
(Apple)->boolean
),然后将其转换为兼容的功能接口类型。但是JVM没有这种函数类型,并且在创建lambda表达式的项目期间已经做出了不实现它们的决定。同样,如果您对具体原因感兴趣,请询问开发人员。



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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存