public class Java8_Supplier {
public static void main(String[] args) {
//java7 寫法
Supplier<Animal> animalSupplier = new Supplier<Animal>() {
@Override
public Animal get() {
return new Animal();
}
};
/**
* java8 lambda表達式
*
* 由源碼可以看到 Supplier接口是有 @FunctionalInterface 註解的
*
* 所以可以用lambda表達式
*
*/
Supplier<Animal> animalSupplier1 = () -> new Animal();
//更簡潔的書寫方式
Supplier<Animal> animalSupplier2 = Animal::new;
//Supplier翻譯爲供應者,類似工廠,用於生產對象
Animal animal = animalSupplier2.get();
//總結
//() -> new Animal()代表的是lambda表達式
//Animal::new 代表的是lambda表達式中對象創建,也就是 new Animal()
//Animal::new這種用法是在lambada表達式的前提下,所以 Animal animal = Animal::new這種
//用法是錯誤的
}
}
class Animal{
}
大家有什麼更好的見解,歡迎交流!