java9的更新主要是新增的jigsaw的模块化系统,语法上并没有很大的变化,这里简单记录语法上的变化并附上案例。
try-with-resources
jdk7中引入try-with-resources由语言自身管理closable资源的关闭
Resource resource1=new Resource();
try(Resource r1 = resource1){
}
jdk9中使用时可以进一步省去在try语句中定义Resource r1
Resource resource1=new Resource();
try(resource1){
}
这里resource1必须是final或效果等价于final的变量。
@SafeVarargs
SafeVarargs是用于标注在包含泛型入参的方法上,标识该方法不会出现类型安全问题,在JDK9之前,这个注解只能加在静态方法和final方法上(他们都不可被override),现在可以加在私有实例方法上了。
匿名类可以使用泛型
JDK9之前匿名类无法使用钻石描述符(即<>),在jdk9中对于可以明确类型的匿名类可以使用钻石描述符了:
List<String> a=new ArrayList<>(){}; //可以编译
a=new ArrayList<>(){}; //无法确定泛型类型无法编译
禁用变量名“_”
变量名不能是“_”。
int _=1; //jdk9中报错
接口的私有方法
jdk8中在接口中可以加入static 方法
interface Interface {
static void method() {
}
}
但该方法是public的没有办法在子类之间共享代码而不外露,jdk9中可以使用私有方法实现子类间的代码共享
interface Interface {
static void staticMethod() {
}
private void privateMethod(){
}
}
class Instance implements Interface{
void test(){
Interface.super.privateMethod();
}
}