Bootstrap

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(); // 创建一个新的空列表
    }
}

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

|

;