函數式編程
面向對象編程是對數據進行抽象;函數式編程是對行為進行抽象。
核心思想:使用不可變值和函數,函數對一個值進行處理,映射成另一個值。
Lambda表達式
lambda表達式僅能放入如下代碼: 預定義使用了 @Functional 注釋的函數式接口,自帶一個抽象函數的方法,或者SAM(Single Abstract Method 單個抽象方法)類型。這些稱為lambda表達式的目標類型,可以用作返回類型,或lambda目標代碼的參數。
例如,若一個方法接收Runnable、Comparable或者 Callable 接口,都有單個抽象方法,可以傳入lambda表達式。類似的,如果一個方法接受聲明于 java.util.function 包內的接口,例如 Predicate、Function、Consumer 或 Supplier,那么可以向其傳lambda表達式