其实说到变量类型推导,我们很容易连联想到一些脚本语言,在(http://openjdk.java.net/jeps/286)中,java提出这个新特性。
Enhance the Java Language to extend type inference to declarations of local variables with initializers.
记得在入门 Java 的时候,觉得就像 C++ 的加强版,在 Java 最开始的版本中,一直都是强类型语言,需要在声明变量的时候规定是什么类型。然后有些人觉得 Java 是一种冗长的语言,需要一种精确、简洁的方式来编写Java代码。其实我觉得这样不是也挺好的哈。Java 7 在某种程度上解决了这个问题。Java 10添加了带有初始化器的局部变量类型推断,以消除冗长。
然后我们可以先安装一下,openjdk10,可以在这个网址下载(http://jdk.java.net/10/)
wget https://download.java.net/java/GA/jdk10/10.0.1/fb4372174a714e6b8c52526dc134031e/10/openjdk-10.0.1_linux-x64_bin.tar.gz
然后解压 tar xvf openjdk-10*_bin.tar.gz 配置一下就好了,参考(https://blog.csdn.net/felix_ghc/article/details/52291381)
vi /etc/profile
加入以下内容,然后 source /etc/profile
然后看看当前的 Java 版本
然后使用 Jshell 来用用,果然是可以这么写的,使用 var 来定义变量名
但是这种类型推导,并不适合以下这种类型推导
然后我们还可以试试这种for each,当然 for (var i=0;i
在某些情况下,此功能不能有效使用:
构造函数的参数
方法的参数
null 也是不行的
return 类型也是不行的
还有类的属性字段
参考:
https://dzone.com/articles/java-10-local-variable-type-inference