Java 8 の新機能について学びます。
私はさまざまな例で遊んでいますが、奇妙な動作を見つけました:
public static void main(String[] args) {
method(Test::new);
}
static class Test{
}
private static void method(Supplier<Test> testSupplier){
Test test = testSupplier.get();
}
このコードは正常にコンパイルされますが、どのように機能するかわかりません。
Test::new
サプライヤーとして受け入れられるのはなぜですか?
サプライヤーのインターフェースは非常にシンプルに見えます:
@FunctionalInterface
public interface Supplier<T> {
T get();
}