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

简介: 【Java代码】使用双冒号 :: 简洁代码及方法引用(静态方法+构造方法+实例方法+函数式编程举例)
1.stream举例
// 1.实例方法
List<String> list = paramIns.stream().map(paramIn::getXxx).collect(Collectors.toList());
// 2.静态方法
ArrayList<String> strings = new ArrayList<>();
strings.forEach(System.out::println);
2.实例对象
@Data
@NoArgsConstructor
@AllArgsConstructor
public class DemoEntity {
    String demoName;
    String describe;
    public static String selfIntroduce(String code) {
        return "我是demo的代码:" + code;
    }
}
3.demo源码
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方法里用到双冒号的几率较大,其他地方我们用的较少

目录
相关文章
|
12天前
|
Java API
Java中的Lambda表达式与函数式编程####
【10月更文挑战第29天】 本文将深入探讨Java中Lambda表达式的实现及其在函数式编程中的应用。通过对比传统方法,我们将揭示Lambda如何简化代码、提高可读性和维护性。文章还将展示一些实际案例,帮助读者更好地理解和应用Lambda表达式。 ####
|
13天前
|
分布式计算 Java API
Java 8引入了流处理和函数式编程两大新特性
Java 8引入了流处理和函数式编程两大新特性。流处理提供了一种声明式的数据处理方式,使代码更简洁易读;函数式编程通过Lambda表达式和函数式接口,简化了代码书写,提高了灵活性。此外,Java 8还引入了Optional类、新的日期时间API等,进一步增强了编程能力。这些新特性使开发者能够编写更高效、更清晰的代码。
27 4
|
15天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
55 4
|
25天前
|
Java API
Java 对象释放与 finalize 方法
关于 Java 对象释放的疑惑解答,以及 finalize 方法的相关知识。
45 17
|
17天前
|
Java API 开发者
Java中的Lambda表达式与函数式编程####
在Java的演变过程中,Lambda表达式和函数式编程的引入无疑是一次重大的飞跃。本文将深入探讨Lambda表达式的定义、用法及优势,并结合实例说明如何在Java中利用Lambda表达式进行函数式编程。通过对比传统编程方式,揭示Lambda表达式如何简化代码、提高开发效率和可维护性。 ####
|
19天前
|
Java 测试技术 Maven
Java一分钟之-PowerMock:静态方法与私有方法测试
通过本文的详细介绍,您可以使用PowerMock轻松地测试Java代码中的静态方法和私有方法。PowerMock通过扩展Mockito,提供了强大的功能,帮助开发者在复杂的测试场景中保持高效和准确的单元测试。希望本文对您的Java单元测试有所帮助。
42 2
|
18天前
|
Java 程序员 数据库连接
Java执行顺序大揭秘:静态块、非静态块和构造方法谁先谁后?
本文详细介绍了Java中的初始化块,包括静态初始化块和非静态初始化块的概念、执行顺序和实际应用场景。通过具体示例,帮助读者理解这两种初始化块的区别和使用场景,让面试官对你刮目相看。
26 0
Java执行顺序大揭秘:静态块、非静态块和构造方法谁先谁后?
|
21天前
|
Java Spring
JAVA获取重定向地址URL的两种方法
【10月更文挑战第17天】本文介绍了两种在Java中获取HTTP响应头中的Location字段的方法:一种是使用HttpURLConnection,另一种是使用Spring的RestTemplate。通过设置连接超时和禁用自动重定向,确保请求按预期执行。此外,还提供了一个自定义的`NoRedirectSimpleClientHttpRequestFactory`类,用于禁用RestTemplate的自动重定向功能。
|
5月前
|
存储 并行计算 Java
Java中的函数式编程与Lambda表达式探索
Java中的函数式编程与Lambda表达式探索
|
4月前
|
存储 并行计算 Java
Java中的函数式编程与Lambda表达式探索
Java中的函数式编程与Lambda表达式探索
下一篇
无影云桌面