考虑到我不能在非可指定类型(Nulls、匿名类、一些单方法类和最重要的交叉类型)中使用 var
,那么为了更好的可读性和一致性,我最好不使用它(尤其是因为它只用于局部类型)?
我有点觉得会被滥用:
var a = someObj.getSomeValue().getSomethingElse().returnsSomething();
虽然这可能主要基于个人观点,但我会说:不,它不是邪恶的。
var
关键字只有在变量类型在编译时已经明确时才允许使用。此外,它将生成相同的字节码,因此没有什么可担心的。
在一些情况下,比如null
,var
是不允许的。这并不是邪恶的,而是好的。如果不是这样,Java就不再是静态类型语言了。(然而,需要注意的是,在你列出的大多数情况下,它是被允许的。)
另外,我没有看到你的例子有任何问题。由于在现实世界中,你的.returnsSomething()
更可能是像.getPerson()
这样的方法,所以读者很清楚var
是一个Person。
null
是唯一一个不起作用的情况。即使对于这种情况,我也不明白如何支持它,例如通过始终推断 Object
为 null
,会意味着“Java 不再是静态类型语言”。 - HolgergetPerson()
返回一个Person
也许是有效的,但这并不重要。请注意原帖作者愿意编写如someObj.getSomeValue().getSomethingElse().returnsSomething()
这样的表达式,即使不知道getSomeValue()
或getSomethingElse()
返回的类型是什么。这与编写var x = someObj.getSomeValue(); var y = x.getSomethingElse(); y.returnsSomething()
没有什么区别... - Holgervar buffer = response.bufferFactory().wrap(message.getBytes(StandardCharsets.UTF_8));
- Daniel Jipa
var var = 10
,这里的var被推断为long类型。 - Gayan Weerakutti