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