一般来说,在 Java 中声明变量时,需要指定类型。比如下方的 List:
List<String> example = new ArrayList<String>();
提供了两个声明本地变量的注解,只能用于本地变量或者 for 循环中。
// Lombok 代码
val example = new ArrayList<String>();
// 反编译后的代码
final ArrayList<String> example = new ArrayList<String>();
// Lombok 代码
var example = new ArrayList<String>();
// 反编译后的代码
ArrayList<String> example = new ArrayList<String>();
JDK 10 新特性 - 本地变量类型推断。😎 嘿嘿,好东西,JDK 也会吸收的。
// Java 10 之前的代码
Path path = Paths.get("src/web.log");
try (Stream<String> lines = Files.lines(path)){
long warningCount
= lines
.filter(line -> line.contains("WARNING"))
.count();
System.out.println("Found " + warningCount + " warnings in the
log file");
} catch (IOException e) {
e.printStackTrace();
}
// Java 10 代码
var path = Paths.get("src/web.log");
try (var lines = Files.lines(path)){
var warningCount
= lines
.filter(line -> line.contains("WARNING"))
.count();
System.out.println("Found " + warningCount + " warnings in the
log file");
} catch (IOException e) {
e.printStackTrace();
}
1.https://projectlombok.org/features/val
2.https://projectlombok.org/features/var
3.https://developer.oracle.com/learn/technical-articles/jdk-10-local-variable-type-inference