Java 中的双冒号“::”

在 Java 中,双冒号 :: 是 Java 8 引入的一个新特性,称为方法引用(Method Reference)。方法引用提供了一种简洁的方式来引用已经存在的方法,而不需要显式地调用它们。方法引用可以看作是 Lambda 表达式的一种简化形式,适用于那些 Lambda 表达式只是简单地调用一个方法的情况。

方法引用的四种形式

1、静态方法引用:

语法:类名::静态方法名

示例:String::valueOf 等价于 (x) -> String.valueOf(x)

2、实例方法引用:

语法:对象::实例方法名

示例:System.out::println 等价于 (x) -> System.out.println(x)

3、特定对象的实例方法引用:

语法:类名::实例方法名

示例:String::length 等价于 (str) -> str.length()

4、构造方法引用:

语法:类名::new

示例:ArrayList::new 等价于 () -> new ArrayList<>()

示例代码

java 复制代码
package org.example;

import java.util.Arrays;
import java.util.List;
import java.util.function.Function;

public class Main {
    public static void main(String[] args) {
        // 1. 静态方法引用
        Function<Integer, String> intToString = String::valueOf;
        System.out.println(intToString.apply(123)); // 输出: 123

        // 2. 实例方法引用
        List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
        names.forEach(System.out::println); // 输出: Alice Bob Charlie

        // 3. 特定对象的实例方法引用
        Function<String, Integer> strLength = String::length;
        System.out.println(strLength.apply("Hello")); // 输出: 5

        // 4. 构造方法引用
        Function<Integer, int[]> arrayCreator = int[]::new;
        int[] array = arrayCreator.apply(5); // 创建一个长度为5的数组
        System.out.println(array.length); // 输出: 5
    }
}

总结

方法引用是 Java 8 引入的一种语法糖,用于简化 Lambda 表达式的编写。它依赖于编译器的支持,而不是 JVM 本身的支持,编译器会将方法引用转换为相应的 Lambda 表达式或接口实现对象,以便 JVM 能够无差别地执行字节码文件。方法引用只能用于函数式接口,即那些有且只有一个抽象方法的接口。

相关推荐
椰椰椰耶2 分钟前
【文档搜索引擎】缓冲区优化和索引模块小结
java·spring·搜索引擎
一个处女座的程序猿O(∩_∩)O3 分钟前
完成第一个 Vue3.2 项目后,这是我的技术总结
前端·vue.js
mubeibeinv3 分钟前
项目搭建+图片(添加+图片)
java·服务器·前端
青莳吖5 分钟前
Java通过Map实现与SQL中的group by相同的逻辑
java·开发语言·sql
逆旅行天涯10 分钟前
【Threejs】从零开始(六)--GUI调试开发3D效果
前端·javascript·3d
Buleall12 分钟前
期末考学C
java·开发语言
重生之绝世牛码14 分钟前
Java设计模式 —— 【结构型模式】外观模式详解
java·大数据·开发语言·设计模式·设计原则·外观模式
小蜗牛慢慢爬行20 分钟前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
Algorithm157630 分钟前
云原生相关的 Go 语言工程师技术路线(含博客网址导航)
开发语言·云原生·golang
m0_7482552631 分钟前
easyExcel导出大数据量EXCEL文件,前端实现进度条或者遮罩层
前端·excel