返回
顶部

该接口位于java.util.function包,在java 8引入,主要用于函数式编程

也就是说,被该接口修饰的变量就是一个方法,该方法不接收任何参数,但是会返回一个Supplier<T>所指定的泛型T

看下面的代码示例:

import java.util.function.Supplier;

class CopperCoin {
    static final String DESCRIPTION = "This is a copper coin.";

    public String getDescription() {
        return DESCRIPTION;
    }
}

public class Main {
    public static void main(String args[]) {
        Supplier<CopperCoin> randomValue = CopperCoin::new;

        System.out.println(randomValue.get().getDescription());
    }
}

注意看这一行:

Supplier<CopperCoin> randomValue = CopperCoin::new;

正常来讲呢,应该是一个lambda表达式的写法:

Supplier<CopperCoin> randomValue = () -> (new CopperCoin());

CopperCoin::new是在java 8中引入的一个特性,可以让你的lambda表达式变得更加简洁

编译器会自动为这种形式的代码生成接口实现代码

在本例中,实现的是Supplier接口的T get()方法