1. 程式人生 > >【JDK8之旅】——Supplier

【JDK8之旅】——Supplier

引言

本來計劃總結一下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