Ответ 1
Это действительно неважно; Runnable
тоже сделает.
Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
В настоящее время вы попадаете в Java лямбда-выражения и ссылки на методы.
Я хочу передать метод без аргументов и никакого возвращаемого значения в качестве аргумента другому методу. Вот как я это делаю:
public void one() {
System.out.println("one()");
}
public void pass() {
run(this::one);
}
public void run(final Function function) {
function.call();
}
@FunctionalInterface
interface Function {
void call();
}
Я знаю, что существует набор предопределенных функциональных интерфейсов в java.util.function
, например Function<T,R>
, но я не нашел ни одного аргумента без аргументов и не создавал результат.
Это действительно неважно; Runnable
тоже сделает.
Consumer<Void>,
Supplier<Void>,
Function<Void, Void>
Вы также можете передать лямбда следующим образом:
public void pass() {
run(()-> System.out.println("Hello world"));
}
public void run(Runnable function) {
function.run();
}
Таким образом, вы передаете лямбда непосредственно как метод.