現在、Java 8ラムダ式とメソッド参照に入ります。
引数や戻り値のないメソッドを引数として別のメソッドに渡したいです。これは私がそれをやっている方法です:
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();
}
このようにして、ラムダをメソッドとして直接渡します。