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

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

从形参到实例方法的实参

示例

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)的替代方案

posted @   舒山  阅读(338)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示