Java中的双冒号“::”:一种强大的语言特性

Java中的双冒号“::”是Java 8引入的一种新的操作符,称为方法引用。方法引用提供了一种引用已存在的方法或构造函数的方式,而无需显式地提供方法名。方法引用可以使代码更简洁、易读。

方法引用有以下四种类型:

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<>()

下面是一些示例代码:

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

public class MethodReferenceExample {
    public static void main(String[] args) {
        // 静态方法引用
        Runnable runnable = () -> System.out.println("Hello, World!");
        Runnable runnableMethodRef = System.out::println;
        runnableMethodRef.run(); // 输出 "Hello, World!"

        // 实例方法引用
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
        Consumer<Integer> consumer = (number) -> System.out.println(number);
        Consumer<Integer> consumerMethodRef = System.out::println;
        numbers.forEach(consumerMethodRef); // 输出 1 2 3 4 5

        // 类的实例方法引用
        Consumer<String> stringConsumer = String::toUpperCase;
        System.out.println(stringConsumer.accept("hello")); // 输出 "HELLO"

        // 构造方法引用
        Supplier<List<String>> listSupplier = List::new;
        List<String> newList = listSupplier.get(); // 创建一个新的空列表
    }
}

在这个示例中,我们使用了不同类型的方法引用来简化代码。通过使用方法引用,我们可以更简洁地表示对现有方法的调用,从而提高代码的可读性和效率。

|

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值