Lambda
a)Lambda 它是匿名函數,可傳遞的代碼(簡潔)、使用Lambda表達式就可以解決匿名內部類
b)“類型推斷“ 例子如下:
Comparator<Integer> com = (x,y) -> Integer.compare(x,y);
List<Integer> list = new ArrayList<Integer>();
List<Integer> list = new ArrayList<>();
c)函數式接口(@FunctionalInterface):接口中只有一個抽象方法的接口
d)Java 8內置四大核心函數式接口:
1)Consumer< T>: 消費性接口 void accept(T t);
2)Supplier< T> : 供給型接口 T get();
3)Function<T, R>: 函數式接口 R apply(T t);
4)Predicate< T>: 斷言型接口 boolean test(T t);
e)方法引用的三種語法格式
1)對象::實例方法名
2)類::靜態方法名
3)類::實例方法名
注意:
1)lambda體中調用方法的參數列表與返回值類型,要與函數式接口中抽象方法的函數列表和返回值類型保持一致!
2)若lambda參數列表中的第一參數是 實例方法的調用者,而第二個參數是實例方法的參數時,可以使用ClassName :: method
f)構造器引用
格式:ClassName::new
注意:需要調用的構造器的此參數列表要與函數式接口中抽象方法的參數列表保持一致!
g)數組引用
格式:Type[]::new