更多简明的资源尝试声明
如果您已经拥有资源作为final有效final变量,则可以在try-with-resources声明中使用该变量而无需声明新变量。一个“有效的最终”变量是其值在初始化后,从来没有改变过。
例如,您声明了以下两个资源:
//最终资源
最终资源resource1 = new Resource(“ resource1”);
//有效的最终资源
资源resource2 =新Resource(“ resource2”);
在Java SE 7或8中,您将声明新变量,如下所示:
试试(资源r1 = resource1;
资源r2 = resource2){
...
}
在Java SE 9中,您无需声明r1和r2:
// Java SE 9中新的和改进的try-with-resources语句
尝试(resource1;
资源2){
...
}
还有更完整的描述在try-与资源语句中的Java教程(Java SE的8和更早版本)。
Java SE 9中的小语言更改
Java SE 9中有一些小的语言更改。
私有实例方法上允许@SafeVarargs批注。
@SafeVarargs批注只能应用于无法覆盖的方法。这些包括静态方法,最终实例方法,以及Java SE 9中的新增功能,私有实例方法。
您可以将Diamond语法与匿名内部类结合使用。
可以在Java程序中编写的类型(例如int或String)称为可分配类型。无法在Java程序中编写的编译器内部类型称为不可指定类型。
菱形运算符使用推断的结果可能会出现不可表示的类型。因为将带钻石的匿名类型与匿名类构造函数一起使用的推断类型可能超出类文件中的签名属性所支持的类型集,所以Java SE 7中不允许将带钻石的匿名类型与匿名类一起使用。
在Java SE 9中,只要可以推断出推断的类型,就可以在创建匿名内部类时使用菱形运算符。
下划线字符不是合法名称。
如果使用下划线字符(“ _”)标识符,则无法再编译源代码。
支持专用接口方法。
支持专用接口方法。这种支持允许接口的非抽象方法在它们之间共享代码。