Java9(2017年9月)
1、接口里面可以添加私有的接口:Java8对接口增加了默认方法的支持,在Java9中对该功能又来了一次升级,现在可以在接口里面定义私有方法,然后在默认方法里面调用接口的私有方法。
public interface TestInterface {
default void wrapMethod(){
innerMethod();
}
private void innerMethod(){
System.out.println("");
}
}
2、匿名内部类也支持钻石运算符:Java5就引入了泛型,到了Java7开始支持钻石运算符<>
List<Integer> numbers = new ArrayList<>();
咋Java9中对匿名内部类也做了支持
List<Integer> numbers = new ArrayList<>() {
...
}
3、增强了try-with-resources:Java7中增加了try-with-resources的支持,可以自动关闭资源:
try (BufferedReader bufferReader = new BufferedReader(...)) {
return bufferReader.readLine();
}
但需要声明多个资源变量时,代码看着就有点恶心了,需要在 try 中写多个变量的创建过程:
try (BufferedReader bufferReader0 = new BufferedReader(...);
BufferedReader bufferReader1 = new BufferedReader(...)) {
return bufferReader0.readLine();
}
Java9中对这个功能进行了增强,可以引用try代码块之外的变量来自动关闭:
BufferedReader bufferReader0 = new BufferedReader(...);
BufferedReader bufferReader1 = new BufferedReader(...);
try (bufferReader0; bufferReader1) {
System.out.println(br1.readLine() + br2.readLine());
}