在Java 10的众多特性里,局部变量的类型推断是比较受大家关注的特性之一。这里简单介绍下它的使用以及限制。
在Java 7,声明一个列表我们会这样做:
List<String> list = new ArrayList<String>();
Java 8/9可以改写为:
List<String> list = new ArrayList();
等式右边的类型会根据左边声明List所指定的类型推断出。
Java 10引入了var,声明列表:
var list = new ArrayList();
JDK会把列表的泛型类型推断为Object。
var声明的为局部变量,它允许开发人员跳过局部变量类型的声明,局部变量的类型会由JDK推断出。
var使用位置
1、在static初始化代码块里使用:
static {
var name= "张三";
System.out.println("Hello, " + name);
}
2、方法体里的局部变量
public void sayHello() {
var name = "李四";
System.out.println("Hello, " + name);
}
3、for循环
var names = new ArrayList();
for(var name : names) {
System.out.println(name);
}
4、接收方法的返回值
public Integer doSomething() {
//...
}
var result = doSomething();
var并不是保留字,是允许“var”作为变量名使用。
var var = 10;
var禁止使用的地方
var并不是在所有地方都能够使用,这里列一下不能使用var的地方。
1、不能作为构造函数的参数
public class Demo {
public Demo(var param) {
//错误用法
}
}
2、不能作为方法的参数
public void doSomething(var param1, var param2) {
//错误用法
}
3、不能用作catch的参数
try {
//...
} catch(var ex) {
//错误用法
}