java9语法变更

不点 阅读:174 2022-04-08 10:52:24 评论:0

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(); 
    } 
} 

标签:java
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

一个IT知识分享的公众号