Java8学习笔记(八)--方法引入的补充

Java8学习笔记(三)--方法引入中,简要总结了方法引入时的使用规则,但不够完善。这里补充下几种情况:

从形参到实例方法的实参

871373-20170816225801209-1511405985.jpg

示例
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);
    }
}

从形参到目标

871373-20170816225805350-485865097.jpg

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

从形参到构造函数实参

871373-20170816225808553-1956984963.jpg

示例
    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);

传递两个形参作为实参

871373-20170816225813021-637304377.jpg

示例
    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);

第一个形参作为调用的目标而传递

871373-20170816225815240-258691897.jpg

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

原文

传递表达式(pass-through lambdas)的替代方案

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值