【JDK8之旅】——Supplier
阿新 • • 發佈:2018-12-17
引言
本來計劃總結一下java8中的方法引用,但是在使用方法引用的過程中,我們會不斷的見到這個內建的函式式介面,首先我們來看一下原始碼
package java.util.function; /** * Represents a supplier of results. * 這是一個提供結果的函式介面. * 特點: * (1)只有返回值 * (2)沒有輸入引數 * <p>There is no requirement that a new or distinct result be returned each * time the supplier is invoked. * * get()方法被呼叫時,對於一定要new出一個新物件 or 生成一個和之前結果不同的值 這兩方面,都沒有強制規定. * 這一介面函式的功能方法為:get() * * <p>This is a <a href="package-summary.html">functional interface</a> * whose functional method is {@link #get()}. * * @param <T> the type of results supplied by this supplier * * @since 1.8 */ @FunctionalInterface public interface Supplier<T> { /** * Gets a result. * * @return a result */ T get(); }
對應原始碼中的註釋,我大概這樣理解:
使用demo:
public void test(){
//建立Supplier容器,宣告為TestSupplier型別,此時並不會呼叫物件的構造方法,即不會建立物件
Supplier<RobotUser> user=RobotUser::new;
//呼叫get()方法,此時會呼叫物件的構造方法,即獲得到真正物件
RobotUser user1 = user.get();
}
每次呼叫get()方法的時候才會建立物件。並且每次呼叫建立的物件都不一樣;
這個內建的函數借口,在下面分享方法引用的時候,頻繁出現1