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