【发布时间】:2018-09-09 17:43:48
【问题描述】:
在 Java 10 中,var 可以用如下字符串赋值:
var foo = "boo";
虽然不允许使用 lambda 表达式对其进行赋值,例如:
var predicateVar = apple -> apple.getColor().equals("red");
当它可以推断出 String、ArrayList、用户类等其余部分时,为什么它不能推断出 lambda 或方法引用类型?
【问题讨论】:
-
应该推断出
var的具体类型是什么?标准功能接口之一还是您自己的一个?该决定应基于什么? -
@lexicore 我希望
Predicate<Apple>(假设apple是Apple类型)。这就是为什么这是一个错误,而不是一个功能。 -
我从来没有暗示过任何关于性能的事情,我不知道你为什么这么问。我的评论的重点是你不能从它的初始化器推断你的变量的类型。正如我已经证明的那样,这是模棱两可的。
-
编码速度是次要考虑因素。你 90% 的时间将花在阅读和维护现有代码上,而不是编写新代码。正如a VP of Java development at Sun once put it, “Java 程序易于阅读 比编写更重要。”
-
有优秀答案的相关问题 - stackoverflow.com/questions/49134118/…