JDK 9新特性

接口私有方法

  • JDK 8新增了静态方法和默认方法,但是不支持私有方法
  • JDK 9新增了私有方法:private
package com.ybchen.jdk9;

public interface Pay {
    void pay();

    default void defaultPay() {
        privateMethod();
    }

    private void privateMethod() {
        System.out.println("接口私有方法");
    }
}
class PayImpl implements Pay{
    public static void main(String[] args) {
        PayImpl pay=new PayImpl();
        pay.defaultPay();
        pay.pay();
    }

    @Override
    public void pay() {
        System.out.println("pay");
    }
}

注意事项

  • 接口中的静态方法不能被实现类继承子接口继承,但是接口中的非静态的默认方法可以被实现类继承
  • 例如:List.of()方法,ArrayList虽然继承了List,但是不能用ArrayList.of()方法
  • 类的静态方法可以被继承

try-with-resource

  在try外进行初始化,在括号内引用,即可实现资源自动关闭,多个变量则用分号进行分割。不需要声明资源就可以使用它,并得到相同的结果。

    public static void main(String[] args) throws FileNotFoundException {
        String path = "/Users/Desktop/t.txt";
        test(path);
    }
    private static void test(String filepath) throws FileNotFoundException {
        OutputStream out = new FileOutputStream(filepath);
        try (out) {
            out.write((filepath + "https://www.cnblogs.com/chenyanbin/").getBytes());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

只读集合

  集合中只能读取,不能添加或者删除里面的元素。

jdk9之前

package com.ybchen.jdk9;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * @Description:
 * @Author:chenyanbin
 * @Date:2020/12/24 8:28 下午
 * @Versiion:1.0
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("springboot");
        list.add("springmvc");
        list = Collections.unmodifiableList(list);
        System.out.println(list);
        list.add("vue");
    }
}
ListDemo

jdk9之后

 

package com.ybchen.jdk9;

import java.util.List;

/**
 * @Description:
 * @Author:chenyanbin
 * @Date:2020/12/24 8:28 下午
 * @Versiion:1.0
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = List.of("springboot", "springmvc");
        System.out.println(list);
        list.add("vue");
    }
}
ListDemo

Stream API

takeWhile

  有序的集合,从Stream中获取一部分数据,返回从头开始的尽可能多的元素,直到遇到第一个false结果,如果第一个值不满足断言条件,将返回一个空的Stream

package com.ybchen.jdk9;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @Description:
 * @Author:chenyanbin
 * @Date:2020/12/24 8:28 下午
 * @Versiion:1.0
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = List.of("springboot", "springmvc","","vue")
                .stream()
                .takeWhile(obj->!obj.isEmpty())
                .collect(Collectors.toList());
        //只要有不满足的,直接返回结果集
        System.out.println(list);
    }
}
ListDemo

dropWhile

  与takeWhile相反,返回剩余的元素,和takeWhile方法形成互补

 

package com.ybchen.jdk9;

import java.util.List;
import java.util.stream.Collectors;

/**
 * @Description:
 * @Author:chenyanbin
 * @Date:2020/12/24 8:28 下午
 * @Versiion:1.0
 */
public class ListDemo {
    public static void main(String[] args) {
        List<String> list = List.of("springboot", "springmvc","","vue")
                .stream()
                .dropWhile(obj->!obj.isEmpty())
                .collect(Collectors.toList());
        //遇到不满足的元素,返回剩余的元素
        System.out.println(list);
    }
}
ListDemo

 

posted @ 2020-12-23 23:46  陈彦斌  阅读(118)  评论(0)    收藏  举报