JDK8接口新特性

1.概述

JDK8中对接口规范进行了新的定义,允许在接口中定义默认方法(使用default关键字修饰),静态方法,同时还推出了函数式接口使用@FunctionInterface注解描述)设计

2.应用场景

基于JDK8中接口新规范的定义,不仅可以扩展接口新功能(新的标准),还能保持接口向前兼容的特性。例如Java API中的集合操作规范

3.快速入门分析

3.1.default方法设计及实现

JDK8中为了对接口业务进行扩展,但又不影响实现类,提供了默认方法。此类型的方法使用default关键字修饰,可以有方法体的实现
如List中的sort方法
在这里插入图片描述

interface IA{
    default void doMethod01() {
             System.out.println("doMethod01");
     }

     default void doMethod02() {
             System.out.println("doMethod02");
     }
}

接口默认方法提高了编程的灵活度,一个类在实现接口时,接口中假如有默认方法,默认方法可以有选择性的对其进行重写,但不是必须要重写

class ClassA implements IA{}

接口默认方法,解决了java8和以前接口版本特性的兼容性问题,对于我们以后的程序开发,可以在接口子类中直接使用接口默认方法,而并不再需要在各个子类中都去实现这些方法了

3.2.static方法设计及实现

Java8中的接口规范,不仅允许定义多个默认方法,也允许在接口中定义多个静态方法,这些静态方法类似于 class 中的静态方法,可以通过接口名进行直接调用

interface IB{
    static void doMethod() {
            System.out.println("doMethod()");
    }
}

接口中静态方法并不能在实现类中被覆写,实现类中可以声明相同的方法,但这两个方法之间除了名字相同,并没有 override 关系

3.3.函数式接口设计及实现

Java8引入了一个是函数式接口(Functional Interfaces),此接口使用@FunctionalInterface修饰,并且此接口内部只能包含一个抽象方法

@FunctionalInterface
public interface Comparator<T> {
  int compare(T o1, T o2);  // public abstract
}

说明:函数式接口推出的目的主要是为了配合后续Lambda表达式的应用。

4.应用案例增强分析及实现

在JDK中的java.util.function包中定义了大量函数式接口。常用的有如下几个:

4.1.消费型接口(特点:方法有入参,没有返回值)

@FunctionalInterface
public interface Consumer<T> {
   void accept(T t);
    ...
}

4.2.函数式接口(特点:方法有入参,有返回值)

@FunctionalInterface
public interface Function<T, R> {
   R apply(T t);
    ...
}

4.3.判定式接口(特点:方法有入参,返回值为boolean)

@FunctionalInterface
public interface Predicate<T> {
   boolean test(T t);

    ...
}

4.4.供给式接口(特点:方法没有入参,但有返回值)

@FunctionalInterface
public interface Supplier<T> {
   T get();
     ...
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值