Использование функционального интерфейса Supplier выглядит так
Supplier supplier = () -> "hello";Сам интерфейс так
public interface Supplier<T> {
T get();
}То есть ничего не получает, но выдает результат (определенного типа).
Поэтому правильно указывать тип, в нашем примере это String:
Supplier<String> supplier = () -> "hello";А если бы мы писали в старом стиле с анонимными внутренними классами, то записали бы так
Supplier<String> supplier = new Supplier<String>() {
@Override
public String get() {
return "hello";
}
};Без анонимных внутренних классов, просто с обычным классом выглядело бы так
class S implements Supplier<String> {
@Override
public String get() {
return "hello";
}
}
Supplier<String> supplier = new S();