关于java:Java-8函数式接口之Supplier用法

42次阅读

共计 1263 个字符,预计需要花费 4 分钟才能阅读完成。

Java 8 引入了函数式接口的概念,其中之一是 Supplier 接口。Supplier 接口是一个无参数的函数式接口,它不承受任何输出参数,但能够返回一个后果。它定义了一个名为 get() 的形象办法,用于获取后果。

上面是 Supplier<T> 接口的定义:

@FunctionalInterface
public interface Supplier<T> {T get();
}

在函数式编程中,Supplier 接口罕用于提早计算或惰性求值。它能够用来示意一个供应商或提供者,用于生成或获取数据。当须要获取数据时,能够调用 Supplierget() 办法来获取后果。

应用 Supplier 接口的次要劣势之一是它能够与 Java 8 的新个性 lambda 表达式联合应用。通过 lambda 表达式,能够以更简洁和易读的形式定义 Supplier 对象。

上面是一个应用 Supplier 接口的示例:

import java.util.function.Supplier;

public class SupplierExample {public static void main(String[] args) {
        // 应用 lambda 表达式创立 Supplier 对象
        Supplier<String> supplier = () -> "你好,世界!";
        String result = supplier.get();
        // 调用 get() 办法获取后果
        System.out.println(result);
    }
}
// 输入:你好,世界!

在下面的示例中,咱们应用 lambda 表达式创立了一个返回字符串 ”Hello, World!” 的 Supplier 对象。而后,咱们调用了 get() 办法来获取后果,并将其打印到管制台上。

除了简略的返回固定值之外,Supplier 接口还能够用于生成随机数、读取文件、从数据库中获取数据等各种场景。通过实现 Supplier 接口的自定义类,咱们能够依据具体需要来生成或获取数据。

以下是其余常见用法示例:

1. 提供随机数生成器:

Supplier<Integer> randomGenerator = () -> new Random().nextInt();
int randomNumber = randomGenerator.get();

2. 提早加载资源:

Supplier<DatabaseConnection> connectionSupplier = () -> new DatabaseConnection();
DatabaseConnection connection = connectionSupplier.get();

3. 惰性初始化对象:

Supplier<ExpensiveObject> lazyInitializer = ExpensiveObject::new;
ExpensiveObject object = lazyInitializer.get();

总结一下,Java 8 的函数式接口 Supplier 用于示意一个供应商或提供者,它不承受任何输出参数,但能够返回一个后果。它能够与 lambda 表达式联合应用,用于提早计算或惰性求值。

正文完
 0