首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java【代码 23】使用双冒号 :: 简洁代码及方法引用(静态方法+构造方法+实例方法+函数式编程举例)

Java【代码 23】使用双冒号 :: 简洁代码及方法引用(静态方法+构造方法+实例方法+函数式编程举例)

原创
作者头像
yuanzhengme
发布2025-08-01 10:46:17
发布2025-08-01 10:46:17
2510
举报
文章被收录于专栏:JavaCodeJavaCode

1.stream举例

代码语言:java
复制
// 1.实例方法
List<String> list = paramIns.stream().map(paramIn::getXxx).collect(Collectors.toList());
// 2.静态方法
ArrayList<String> strings = new ArrayList<>();
strings.forEach(System.out::println);

2.实例对象

代码语言:java
复制
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DemoEntity {

    String demoName;
    String describe;

    public static String selfIntroduce(String code) {
        return "我是demo的代码:" + code;
    }

}

3.demo源码

代码语言:java
复制
public class DoubleColonDemo {

    public static void main(String[] args) {
        // 1.静态方法引用【类名::静态方法名】
        Function<String, Integer> functionParseInt = Integer::parseInt;
        Integer value = functionParseInt.apply("666");
        System.out.println(value);
        // 666

        // 2.构造方法引用【类名::new】
        BiFunction<String, String, DemoEntity> biFunction = DemoEntity::new;
        DemoEntity demoEntity = biFunction.apply("双引号用法", "代码举例说明");
        System.out.println(demoEntity.toString());
        // DemoEntity(demoName=双引号用法, describe=代码举例说明)

        // 3.实例方法引用【实例对象::实例方法名】
        String content = "FunctionSubstring";
        Function<Integer, String> functionSubstring = content::substring;
        String result = functionSubstring.apply(8);
        System.out.println(result);
        // Substring
        // 自定义的实例方法引用【实例对象::实例方法名】
        Function<String, String> selfIntroduce = DemoEntity::selfIntroduce;
        String selfIntroduceStr = selfIntroduce.apply("Do something!");
        System.out.println(selfIntroduceStr);
        // 我是demo的代码:Do something!

        // 4.函数式编程:方法引用
        String parameter = "hello world!";
        System.out.println(speakOutLoud(String::toUpperCase, parameter));
        // HELLO WORLD!
    }

    /**
     * 测试参数是函数的方法
     *
     * @param function  方法传递的函数
     * @param parameter 方法传递的参数
     */
    private static String speakOutLoud(Function<String, String> function, String parameter) {
        return function.apply(parameter);
    }

}

4.总结

Lambda表达式也是一种函数式接口,它一般用自己提供方法体,而方法引用一般直接引用现成的方法。我们在stream方法里用到双冒号的几率较大,其他地方我们用的较少

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.stream举例
  • 2.实例对象
  • 3.demo源码
  • 4.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档