Java8之函数式接口

目录

1.概念须知:

2.四大函数式接口 

Function 函数式接口

Supplier供给型函数

Consumer 消费型接口

Predicate 断言型函数


1.概念须知:

 抽象方法:存在于抽象类和接口中,没有方法体。

        一般情况下,接口中的方法都是抽象方法,但是,java8后出现了关键字default和static,出现存在方法体的方法,并不是抽象方法。

代码演示 :

 函数式接口:

  1.  接口中有且仅有一个抽象方法,

  2.  可以存在多个非抽象方法,例如上述的默认方法和静态方法;

  3.  可以用@FunctionalInterface 注解进行修饰;

  4.  可以隐式转化为lambda表达式。

2.四大函数式接口 

  • Function 函数式接口

 有一个输入,有一个输出。里面存在抽象方法:R apply(T t);

代码体验 

/**
* @Description:输入一个数求平方
* @Author: yz
* @Version: 1.0.0
* @Date: 2022/7/22
*/
@Test
public void test2() {
    //匿名内部类
    Function function = new Function<Integer, Integer>() {
        @Override
        public Integer apply(Integer n) {
            return n * n;
        }
    };
    System.out.println(function.apply(12));


    //lambda表达式
    Function<Integer, Integer> func = (n) -> n * n;
    System.out.println(func.apply(12));
}
  • Supplier供给型函数

无参输入,有参输出。里面存在抽象方法:T get();

 代码体验 

/**
* @Description:输出10以内的整数和
* @Author: yz
* @Version: 1.0.0
* @Date: 2022/7/22
*/
@Test
public void test3() {
    //匿名内部类
    Supplier supplier = new Supplier<Integer>() {


        @Override
        public Integer get() {
            int sum = 0;
            for (int i = 0; i < 10; i++) {
                sum += i;
            }
            return sum;
        }
    };
    System.out.println(supplier.get());


    //lambda表达式
    Supplier sup = () -> {
        int sum = 0;
        for (int i = 0; i < 10; i++) {
            sum += i;
        }
        return sum;
    };
    System.out.println(sup.get());

}
  • Consumer 消费型接口

接收一个参数,无输出 。里面存在抽象方法:void accept(T t);

  代码体验 

/**
* @Description:true输出1否则为0
* @Author: yz
* @Version: 1.0.0
* @Date: 2022/7/22
*/
@Test
public void test4() {
    //匿名内部类
    Consumer<Boolean> consumer = new Consumer<Boolean>() {
        @Override
        public void accept(Boolean s) {
            System.out.println(s==true?1:0);
        }
    };
  consumer.accept(false);


    //lambda表达式
    Consumer<Boolean> consu = t -> System.out.println(t==true?1:0);
    consu.accept(false);
}
  • Predicate 断言型函数

 接收一个类型T的参数,给出判断结果。里面存在抽象方法:boolean test(T t);

   代码体验 

/**
* @Description:判断字符串是否为空
* @Author: yz
* @Version: 1.0.0
* @Date: 2022/7/22
*/
@Test
public void test1() {
    //匿名内部类
    Predicate predicate = new Predicate<String>() {
        @Override
        public boolean test(String o) {
            return o.isEmpty();
        }
    };
    System.out.println(predicate.test("222"));


    //lambda表达式
    Predicate<String> pre = (str) -> str.isEmpty();
    System.out.println(pre.test("222"));
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值