Java局部变量类型推理教程展示了Java 10的新功能--局部变量类型推理。类型推断是指编译器从赋值的右侧推断出数据类型的能力。
Java 10
Java 10于2018年3月20日发布。它带来了几个Java增强提案(JEPs)。JEP 286被称为局部变量类型推断。
JEP 296
该文件通过减少与编写Java代码有关的仪式来改善开发人员的体验,同时保持Java对静态类型安全的承诺,允许开发人员省略往往不必要的局部变量类型的清单声明。
它引入了一个新的var 关键字,它可以在赋值操作的左侧使用。Java会自动从赋值的右侧推断出必要的数据类型。
Java本地类型变量推断的例子
在下面的例子中,我们将创建一个简单的Java控制台应用程序,在其中测试这个新功能。
$ wget http://download.oracle.com/otn-pub/java/jdk/10+46/76eac37278c24557a3c4199677f19b62/jdk-10_linux-x64_bin.tar.gz
$ tar xzvf jdk-10_linux-x64_bin.tar.gz
$ mv jdk-10 ~/bin
我们下载Oracle JDK并打开存档。我们把安装目录移到我们选择的一个新目录中。
$ ~/bin/jdk-10/bin/java --version
java 10 2018-03-20
Java(TM) SE Runtime Environment 18.3 (build 10+46)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
我们验证Java的版本。
$ mkdir -p src/com/zetcode bin
$ touch src/com/zetcode/JavaNewsEx.java
$ tree
.
├── bin
└── src
└── com
└── zetcode
└── JavaNewsEx.java
我们创建目录结构。
com/zetcode/JavaNewsEx.java
package com.zetcode;
import java.util.List;
public class JavaNewsEx {
public static void main(String[] args) {
var name = "Jonathan";
System.out.printf("The word %s has %d characters%n",
name, name.length());
var age = 34;
age += 12;
System.out.println(age);
var words = List.of("cloud", "fine", "pen", "dog",
"temper", "sky", "book");
System.out.println(words);
}
}
这是该例子的soruce代码。
var name = "Jonathan";
定义了一个新的变量name 。我们使用var 关键字。类型是String ,它是由字符串字面推断出来的。
$ ~/bin/jdk-10/bin/javac -d bin src/com/zetcode/JavaNewsEx.java
$ ~/bin/jdk-10/bin/java -cp bin com.zetcode.JavaNewsEx
The word Jonathan has 8 characters
46
[cloud, fine, pen, dog, temper, sky, book]
我们编译并运行这个例子。
在本教程中,我们使用了Java 10的新特性--局部变量类型推断。