Java: 函数式接口双冒号::实现方法引用,传递方法作为函数参数

简介: Java: 函数式接口双冒号::实现方法引用,传递方法作为函数参数

方法引用是一种函数式接口的另一种书写方式

方法引用分为三种,方法引用通过一对双冒号:: 来表示

  • 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt
  • 实例方法引用,通过实例对象::实例方法,如 str::substring
  • 构造方法引用,通过类名::new, 如 User::new
package com.github.mouday.demo;
import java.util.function.Function;
public class Demo {
    public static void main(String[] args) {
        // 使用双冒号:: 引用静态方法
        Function<String, Integer> fun = Integer::parseInt;
        Integer value = fun.apply("20");
        System.out.println(value);
        // 20
        // 使用双冒号:: 引用实例方法
        String content = "Hello";
        Function<Integer, String> func = content::substring;
        String result = func.apply(1);
        System.out.println(result);
        // ello
        // 使用双冒号:: 引用构造方法
        Function<Integer, Integer> intFunc = Integer::new;
        Integer ret = intFunc.apply(10);
        System.out.println(ret);
        // 10
    }
}

将函数引用作为方法的参数

package com.github.mouday.demo;
import java.util.function.Function;
public class Demo {
    public static void main(String[] args) {
        Demo.sayHello(String::toUpperCase, "Hello");
        // HELLO
        Demo.sayHello(String::toLowerCase, "Hello");
        // hello
    }
    public static void sayHello(Function<String, String> func, String text) {
        String result = func.apply(text);
        System.out.println(result);
    }
}

参考

卧槽!你竟然不晓得Java中可以用 :: 吗?


相关文章
|
7天前
|
Java
Java——方法的引用
方法引用允许将已有方法作为函数式接口的实现。使用“::”符号,需具备函数式接口,被引用的方法须存在且参数和返回值需与抽象方法一致。其分类包括:静态方法引用(类::方法名)、成员方法引用(对象::方法名、this::方法名、super::方法名)和构造方法引用(类名::new)。方法引用提高了代码的简洁性和可读性,减少了样板代码。
25 13
Java——方法的引用
|
3天前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
10 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
3天前
|
Java
java基础(11)函数重载以及函数递归求和
Java支持函数重载,即在同一个类中可以声明多个同名方法,只要它们的参数类型和个数不同。函数重载与修饰符、返回值无关,但与参数的类型、个数、顺序有关。此外,文中还展示了如何使用递归方法`sum`来计算两个数之间的和,递归的终止条件是当第一个参数大于第二个参数时。
14 1
java基础(11)函数重载以及函数递归求和
|
1天前
|
安全 Java API
Java根据URL获取文件内容的实现方法
此示例展示了如何安全、有效地根据URL获取文件内容。它不仅展现了处理网络资源的基本技巧,还体现了良好的异常处理实践。在实际开发中,根据项目需求,你可能还需要添加额外的功能,如设置连接超时、处理HTTP响应码等。
12 4
|
8天前
|
Java API
Java方法的优缺点
Java 方法是编程的基本构建块,具有代码重用性、模块化、易于调试、增强可读性、支持重载和可变参数、封装性及静态与实例方法的灵活性等优点,但也存在性能开销、过度抽象、限制使用环境、参数传递开销、命名冲突和堆栈溢出等缺点。合理设计方法可确保代码高效且易维护。
|
3天前
|
安全 Java
java调用方法
java调用方法
17 4
|
4天前
|
Java 索引
java基础扫盲-String类常用的方法
java基础扫盲-String类常用的方法
|
Java 程序员
Java为了程序员方便使用Lambda表达式,Java内置了四个核心函数式接口
jdk1.8新特性值之lambda表达式的使用。系统的介绍了java中为函数式编程提供的四个核心接口。
1293 0
|
3天前
|
存储 缓存 Java
java线程内存模型底层实现原理
java线程内存模型底层实现原理
java线程内存模型底层实现原理
|
8天前
|
缓存 Java 应用服务中间件
Java虚拟线程探究与性能解析
本文主要介绍了阿里云在Java-虚拟-线程任务中的新进展和技术细节。