Java:新语法之jdk9

1.更加简洁地在try catch中使用资源:
可以直接在try中使用之前定义的资源,而不需要像jdk8中必须要在try中定义资源。资源同样会被自动关闭。

package cn.edu.tju.demo.controller;
import java.io.FileReader;

public class NineTest {
    public static void main(String[] args) throws Exception {
        FileReader fileReader=new FileReader("d:\\1111\\1111.txt");
        char[] ch=new char[1024];
        try(fileReader){
            int byteCount=fileReader.read(ch);
            System.out.println(byteCount);
        }
    }
}

2.@SafeVarargs注解的改变,允许把该注解用于private的实例方法

    @SafeVarargs
    private   void test(int age, String... args){
        System.out.println("this is my test case.");
    }

这种用法在jdk8及以前的版本报错,只能加上static或final关键字

3.下划线不能用作标识符.

  int _=8888;

报错。
在jdk 8及以前版本能够正常工作。

4.在接口内能够定义private 方法。

package cn.edu.tju.demo.controller;

public interface MyInterface {
    default  void saySomething(){
        print();
    }
    private void print(){
        System.out.println("ok");
    }
}

上面的print方法的定义,在jdk 8编译无法通过。

5.菱形语法的增强
接口定义:

package cn.edu.tju.demo.controller;

public interface  MyGenericClass<T> {
    void test(T t);
}

在主类中定义匿名内部类对象,

package cn.edu.tju.demo.controller;

public class DiamondSyntaxTest {
    public static void main(String[] args) {
        MyGenericClass<String> f = new MyGenericClass<>() {
            public void test(String str) {
                System.out.println(str);
            }
        };
    }
}

其中new MyGenericClass<>()是jdk9开始支持的写法,jdk8 及以前版本需要new MyGenericClass()这种写法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值