Java 10 var的使用及限制

时间:2021-08-27 17:49:30

在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) {
  //错误用法
}