19

鉴于我不能将 var 用于不可表示的类型(空值、匿名类、某些单一方法类以及最重要的相交类型)。我最好不要使用它以获得更好的可读性和一致性(鉴于它仅适用于本地类型)?

感觉会被虐

var a = someObj.getSomeValue().getSomethingElse().returnsSomething();
4

1 回答 1

19

虽然这可能主要是基于意见的,但我会说:不,它不是邪恶的。

var仅当变量的类型在编译时已经明确时才允许使用该关键字。此外,它会生成相同的字节码,所以没什么好担心的。

在某些情况下,例如null,var是不允许的。这不会使它变得邪恶,而是变得美好。如果不是这种情况,Java 将不再是静态类型的。(但是请注意,在您列出的大多数情况下都允许这样做。)

另外,我认为您的示例没有任何问题。由于您.returnsSomething()更愿意成为.getPerson()现实世界中的东西,因此读者很清楚这var是一个人。

于 2018-04-26T10:30:02.363 回答