Java8學習筆記(八)--方法引入的補充

Java8學習筆記(三)--方法引入中,簡要總結了方法引入時的使用規則,但不夠完善。這裏補充下幾種狀況:html

從形參到實例方法的實參

示例

public class Example {
    static List<Integer> intList = Arrays.asList(1,2,3,4);

    public String increment(int i)
    {
        return String.valueOf(++i);
    }
    @Test
    public void testLambda()
    {
        //.map(this::increment)<=>.map(i->example.increment(i))...
        intList.stream().map(this::increment).forEach(System.out::println);
    }
}

從形參到目標

示例

Stream.of("a","b").map(String::toUpperCase).forEach(System.out::println);

從形參到構造函數實參

示例

static List<String> strList = Arrays.asList("a","b","c","d");

       //.map(String::new) <=> str->new String(str)
    strList.stream().map(String::new).forEach(System.out::println);

傳遞兩個形參做爲實參

示例

List<Integer> intList = Arrays.asList(1,2,3,4);
        //Integer::sum <=> (a,b)->Integer.sum(a,b)
    int i =intList.stream().reduce(Integer::sum).get();
    System.out.println(i);

第一個形參做爲調用的目標而傳遞

示例

//String::concat <=> (a,b)->a.concat(b)
    Stream.of("a","b").reduce("",String::concat);

原文

傳遞表達式(pass-through lambdas)的替代方案java

相關文章
相關標籤/搜索