Java8 Supplier理解

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{

}
大家有什麼更好的見解,歡迎交流!

 

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