Я изучаю новые возможности 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();
}