Java 8 之后,还有哪些进化的功能?( 二 )

有了它,我们就可以在定义局部变量时省略类型定义,减少繁文缛节:

尽管看上去这很像JavaScript的var关键字,但它并不是动态类型。

引用如下JEP的一段话:

我们希望通过减少编写Java代码时的繁文缛节来改善编程的体验,同时维持Java的静态类型安全。

这样定义的变量的类型会在编译时进行推断,上述示例中推断的类型为String。使用var而不是显式指定类型,可以让代码更加简洁,故而可以提高代码的可读性。

下面是类型推断的另一个例子:

显然,知许多情况下这个特性都可以改进代码质量。但是,有时候还是使用显式类型定义更好。我们来看看一些不宜使用var替换类型定义的情况。

随时考虑可读性

第一种情况就是从源代码中删除类型定义可能会降低可读性的情况。

当然这种情况还可以借助IDE,但在代码审核过程中,或者需要快速阅读代码的情况下,这样做就可能影响可读性。比如工厂模式,你只能去寻找负责生成对象的代码来确定生成的对象类型。

推荐阅读