JDK8的新特性

1、接口中默认方法和静态方法

  1. 在JDK8+的接口中可以包含普通方法,但是普通方法必须显式的有default(成员)或者static(类方法)修饰
  2. 以前的JDK7-的接口中是不能包含普通方法的,因为java是单继承,多实现,如果实现的多个接口中有同名的普通方法,就会发生调用冲突
  3. 如果一个类实现的多个接口中存在这个同名同参数列表的方法,则在该类中必须重写该方法
//接口中普通方法
interface A{
    //由子类对象进行调用
    default void show(){
        System.out.println("这是接口中的方法");
    }

    //子类的实现类不可以调用接口中的静态方法
    static void show1(){
        System.out.println("接口中的静态方法");
    }
}

2、Lambda表达式

  1. 接口可以是函数式接口,也可以不是,如果接口中不是函数式接口,此时该接口中只能有一个抽象方法;但是如果一个接口是函数式接口,则该注解[@FunctionalInterface],标注限制了接口中只能有一个抽象方法;
//1、使用TreeSet集合来排序
TreeSet<String> treeSet = new TreeSet<>(new Comparator<String>() {
    @Override
    public int compare(String o1, String o2) {
        return o1.hashCode() - o2.hashCode();
    }
});
//2.1、Lambda表达式的形式实现比较器,表示形式一
TreeSet<String> treeSet1 = new TreeSet<>(
        (o1, o2) -> {
            return o1.hashCode() - o2.hashCode();
        }
);
//2.2、Lambda表达式的形式实现比较器,表示形式二
TreeSet<String> treeSet2 = new TreeSet<>(
        (o1, o2) -> o1.hashCode() - o2.hashCode()
);
//2.3、Lambda表达式的形式实现比较器,表示形式三
TreeSet<String> treeSet3 = new TreeSet<>(Comparator.comparingInt(String::hashCode));

3、方法与构造函数的引用

  1. 使用::做方法引用[其实也是Lambda表达式]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值