1.虽说不变性很重要,但对于局部变量来说,这种重要性程度没有那么高。
2.Java 8引入了“隐式”final的概念,所以在我们看来,局部变量就已经是不可变的。
3.大部分人同意使用var(74%的人强烈同意,12%的人基本同意),而对var/val和var/let的反馈则显得有点含糊不清。
我同意前面两点,至于第三点只能勉强接受,但对结果还是感到有点失望。或许等到了有一天,我们不得不使用final var的时候,是不是可以考虑使用val或let?
总结
在声明局部变量时,可以使用var代替具体的类名或接口名,让编译器自己去推断变量的类型。当然,只有在声明并且立即初始化变量的情况下才能使用var。for循环中的下标也可以使用var来声明。编译器会把推断出来的类型写入字节码,不影响运行时。Java仍然是一门静态类型的语言。
除了局部变量,var不能被用于字段或方法上,这样做是为了避免AAD错误。
虽说var有可能让代码变得更糟,但作为Java开发者,应该尝试在变量声明和嵌套表达式或链式表达式之间做出权衡,写出可读性更高的代码。