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***抽象方法,這種方法無參數,按照某種邏輯運算返回一個數據值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章