java匿名内部类转lambda表达式笔记

记录一次lambda表达式的转换,本次记录一种形式
补充引用文章
匿名内部类形式

 DataStream<UserBehavior> pvData = timeData
           .filter( 
             new FilterFunction<UserBehavior>() {
	           @Override
	           public boolean filter(UserBehavior userBehavior) throws Exception {
	               // 过滤出只有点击的数据
	               return userBehavior.behavior.equals("pv");
	           }
	       }
	      );

转lambda形式

DataStream<UserBehavior> pvData = timeData
         .filter(
        	 (UserBehavior userBehavior) -> userBehavior.behavior.equals("pv")
         );

满足以下条件的接口抽象方法,能写成lambda表达式

1、接口只有一个抽象方法;
2、接口使用了@FunctionalInterface注解,该注解是个标志性注解,用于声明该接口是一个函数式接口,当然即使不使用这个注解,它依然是一个函数接口;

以上示例中的接口定义如下:

@FunctionalInterface
@Public
public interface FilterFunction<T> extends Function, Serializable {
    boolean filter(T var1) throws Exception;
}

在java.util.function包预定下了大量函数式接口,典型的包含如下4类接口。

***Function:这类接口通常包含一个apply抽象方法,对参数进行处理转换,然后返回一个新的值。

***Consumer:这类接口通常包含一个accept抽象方法,用于对参数进行处理,但是不返回一个新的值。

***Predicate:这类接口通常包含一个test抽象方方法,通过对参数的处理计算,然后返回一个boolean值

***Supplier:这类接口通常包含一个getAs***抽象方法,这种方法无参数,按照某种逻辑运算返回一个数据值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值