Lamda表達式學習筆記二

Lamda表達式學習筆記二

 

lamda表達式----方法引用

上一篇講到Lamda體就是對函數式接口方法的實現 ,在方法體中咱們可能會引用其餘方法實現邏輯,因此在lamda體中咱們能夠直接引用器方法app

I 對象::實例方法名

/**
     * 對象::實例方法名
     */
    @Test
    public void test6() {
        Consumer<String> consumer = (x) -> System.out.println(x);
        consumer.accept("->");
        Consumer<String> consumer1 = System.out::println;
        consumer1.accept("::");
    }

 

結果:

II 類名::靜態方法名

 /**
     * 類名::靜態方法名
     */
    @Test
    public void test7() {
        Comparator<Integer> comparator = (x, y) -> Integer.compare(x, y);
        
        Comparator<Integer> comparator1 = Integer::compare;
    }

 

 III 類名::實例方法名

 

/**
     * 類名::實例方法名
     */
    public void test8() {
        BiFunction<String, String, Boolean> biFunction = (x, y) -> x.equals(y);
        BiFunction<String, String, Boolean> biFunction1 = String::equals;
    }

 

 

 結論:一、引用的方法與函數式接口中抽象方法的入參出參保持一致ide

    二、使用第三種lamda表達式時,只有入參只能爲2個且參數列表中第一個參數是類的實例,參數列表中第二個參數是實例方法的參數時才能夠用函數

 I,II僅需知足結論1,III須要同時知足結論1和結論2學習

 

Lamda表達式----構造器引用

/**
     * 類名::構造器
     */
    @Test
    public void test9() {
        Supplier<Student> studentSupplier = Student::new;
        System.out.println("Supplier:" + studentSupplier.get());
        Function<String, Student> function = Student::new;
        System.out.println("Function:" + function.apply("李四"));
        BiFunction<Integer, Double, Student> biFunction = Student::new;
        System.out.println("BiFunction:" + biFunction.apply(10, 150.0));

    }

 

結果:spa

Supplier:Student{name='null', age=null, hight=null}
Function:Student{name='李四', age=null, hight=null}
BiFunction:Student{name='null', age=10, hight=150.0}

Process finished with exit code 0

 

構造器遵循結論1(引用的方法與函數式接口中抽象方法的入參出參保持一致),是根據構造方法的參數數量來匹配構造方法code

 

我的學習,侵刪對象

 

參考:https://www.bilibili.com/video/av62117143blog

相關文章
相關標籤/搜索