其實說到變量類型推導,咱們很容易連聯想到一些腳本語言,在(http://openjdk.java.net/jeps/286)中,java提出這個新特性。java
Enhance the Java Language to extend type inference to declarations of local variables with initializers.linux
記得在入門 Java 的時候,以爲就像 C++ 的增強版,在 Java 最開始的版本中,一直都是強類型語言,須要在聲明變量的時候規定是什麼類型。而後有些人以爲 Java 是一種冗長的語言,須要一種精確、簡潔的方式來編寫Java代碼。其實我以爲這樣不是也挺好的哈。Java 7 在某種程度上解決了這個問題。Java 10添加了帶有初始化器的局部變量類型推斷,以消除冗長。shell
而後咱們能夠先安裝一下,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 .net
而後解壓 tar xvf openjdk-10*_bin.tar.gz 配置一下就行了,參考(https://blog.csdn.net/felix_ghc/article/details/52291381)blog
vi /etc/profileget
加入如下內容,而後 source /etc/profileit
而後看看當前的 Java 版本io
而後使用 Jshell 來用用,果真是能夠這麼寫的,使用 var 來定義變量名入門
可是這種類型推導,並不適合如下這種類型推導
而後咱們還能夠試試這種for each,固然 for (var i=0;i<arr.length;i++) 這種也是能夠的。
在某些狀況下,此功能不能有效使用:
構造函數的參數
方法的參數
null 也是不行的
return 類型也是不行的
還有類的屬性字段
參考:
https://dzone.com/articles/java-10-local-variable-type-inference