Functional Interface 、Defender Methods、 以及Lambdas表达式

Functional interfaces

Functional interfaces是只包含有一个由abstrac修饰的抽象方法的接口。依据Java8规范,interface如果遵循以下规则即为Functional interface:

  •  一个Functional Interface可以拥有任意数量的由default method,和一个 abstract method。Default method是java8中新增加的由default修饰的方法。
  • 如果一个interface继承了另外一个functional interface,并且本身没有再声明其他的方法,那么这个interface也是一个functional interface。
  • @FunctionalInterface 注解用来让编译器检查一个interface是否是一个有效的functional interface。但是一个functional interface并不必要使用此注解来修饰。
  • 除了一个abstract method,functional interface还可以将Object类中的任何方法声明为抽象方法。
  • functional interface以前叫做Single Abstract Method Interface(SAMI),单抽象方法接口。
  • java.lang.Runnable, java.awt.event.ActionListener, java.util.Comparator, java.util.concurrent.Callable都是functional interfaces。

下面是Java API中的一些示例:

Runnable和Comparator接口都是functional interface:

Runnable.java

interface Runnable {
        void run();
}

Comparator.java

interface Comparator<T> {
        boolean equals(Object obj);
        int compare(T o1, T o2);
}

Defender Methods

为了添加Lambdas表达式,添加了default修饰,可以在interface中写方法的实现。

Lambdas表达式

将匿名内部类,抽象成Lambda表达式,简化语法,增强语义(this指向当前类,而不是匿名内部类)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值