在Java 8中,Supplier接口是一個函數式接口,其定義為:
@FunctionalInterface
public interface Supplier<T> {
T get();
}
Supplier接口僅定義了一個方法get(),用于獲取一個泛型類型的結果。
Java 8中,Supplier接口的新特性主要是在lambda表達式和方法引用的使用上,可以更簡潔地實現Supplier接口的實例化。例如:
// 使用lambda表達式實例化Supplier接口
Supplier<String> supplier = () -> "Hello, World";
System.out.println(supplier.get());
// 使用方法引用實例化Supplier接口
String text = "Hello, Method Reference";
Supplier<String> supplier = text::toUpperCase;
System.out.println(supplier.get());
此外,Java 8還引入了Optional類,該類提供了一種更優雅的方式處理Supplier接口的返回結果為空的情況,可以避免空指針異常。例如:
Supplier<String> supplier = () -> null;
Optional<String> result = Optional.ofNullable(supplier.get());
System.out.println(result.orElse("No value found"));
總的來說,Java 8中的Supplier接口提供了更方便、更靈活的方法來獲取數據,使得代碼更簡潔易讀。