Java 10 新特性之var

今年3月,Java 10 如期发布,Java 10 是采用新发布周期的第一个版本,提供了 109 项新特性,其中最备受关注的莫过于局部变量的类型推断。所以这里主要记录一下这个特性的用法。

看几个Java 10之前声明变量的例子:

1
2
3
4
5
List<String> list = new ArrayList<>();
Stream<String> stream = list.stream();

InputStreamReader reader = new InputStreamReader(System.in);
HttpClient httpClient = HttpClient.newHttpClient();

在Java 10 中,只要是编译器能够通过对象类型来确定变量类型的情况下,变量类型声明可以使用var保留字代替:

1
2
3
4
5
var list = new ArrayList<>();
var stream = list.stream();

var reader = new InputStreamReader(System.in);
var httpClient = HttpClient.newHttpClient();

引入这个特性使得我们的Java 代码变得更加的简洁易读。除此之外我们也可以在增强for循环中使用var

1
2
3
4
5
var list = new ArrayList<>();
list.add("hello");
list.add("java 10");

for (var s : list) System.out.println(s);

当然,var并不是在何时何地都能使用,用于变量声明时,仅局限于具有构造器的变量或基本数据类型,比如下面这些例子编译是不通过的:

1
2
3
4
var a;
a = "hello world";

var b = {1, 2, 3};

编译器将会告警:

QQ截图20190214164317.png

请作者喝瓶肥宅水🥤

0