java函数式接口

函数式接口概括

    Java函数式接口是JDK 8引入的新特性,首先,要明白其是一个接口,但一个接口并不一定是函数式接口,要满足一个接口接口是函数式接口,须满足如下两点:

1、 接口需要加上@FunctionalInterface注解
2、 接口中有且只有一个抽象方法

JDK 8中所有有关函数式接口都在java.util.function这个包中,其中比较常见的有:

1、 Function: 既有输入参数又有输出参数,其接口方法定义如下:

 R apply(T t);

2、 Supplier:有输入参数无输出参数,其接口方法定义如下:

T get();

3、 Consumer: 无输入参数,有输出参数,其接口方法定义如下:

void accept(T t);

函数式接口自定义

通过上节,我们知道了要自定义一个函数式接口满足的条件,就可以自定义一个接口,如下所示:

@FunctionalInterface   // step 1、 引入FunctionalInterface注解
public interface OrgFunction {
    int getInfo(String str);   // step 2、 声明一个有且仅有一个抽象方法
}

定义完一个抽象接口,就可以通过Lambda表达式使用上述接口,如下所示:

public class OrgTest {
    public static void main(String[] args) {
       OrgFunction org = (String o)-> {   //参数类型是可以省略掉
           return o.length();
       } ;
        System.out.println(org.getInfo("hello"));
    }
}

使用函数式接口的好处

使用函数式接口的一个最大好处是可以简化编程,在JDK 8之前,在没有子类情况下,如果实例化一个接口,只能通过用匿名类的方式实现。如要实例化OrgFunction接口,只能通过用一个匿名类的方式实现,代码如下所示:

public class OrgTest{
   public static void main(String[] args){
       OrgFunction org = new OrgFunction(){
           @override
           public int getInfo(String str){
                return str.length;
           }
       };
       org.getInfo("Hello World!");
   }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值