Lambda配合函数式接口的简单用法

首先是自定义函数接口,创建一个接口,添加注解@FunctionalInterface

@FunctionalInterface
public interface IAction {
    public void action();
}

然后使用就是lambda语句的使用,注意一点,lambda语句只是写一个规则,类似于方法,并不具体赋值。t是声明一个参数,->箭头后是方法体。各个函数接口调用自身方法时会执行方法体的内容,从而实现将方法当作参数传入方法中去。

public class LambdaTest {
    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        actions(() -> System.out.println("action"));
        System.out.println(supply( ()-> "supplier.get"));
        System.out.println(predicate((t) -> t==1));
        //object -> targetRef.equals(object),即判断"111"是否与传入的参数等同
        System.out.println(predicateObj(Predicate.isEqual("111")));
        consumer((t) -> System.out.println(t));
    }

    public static void actions(IAction action) {
        action.action();
    }

//以下三个是java.util.function包的接口,包里还有众多接口,这里不一一列出
    //Supplier接口 无参数返回一个结果
    public static String supply(Supplier<String> supplier) {
        return supplier.get();
    }

    //接受一个输入参数,返回一个布尔值结果
    public static boolean predicate(Predicate<Integer> predicate) {
        int temp = 1;
        //predicate.and((t)-> t==2) 返回一个Predicate,其校验规则增加了t==2变成了t==2&&t==1,然后再test执行这个规则,同理还有negate,or
        return predicate.and((t)-> t==2).test(temp);
    }

    public static boolean predicateObj(Predicate<String> predicate) {
        String temp = "111";
        return predicate.test(temp);
    }

    //接受一个输入参数并且无返回的操作
    public static void consumer(Consumer<String> consumer) {
        String temp = "consumer";
        consumer.accept(temp);
    }







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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值