私は、オーバーロードされたメソッドでRunnablesまたはCallableをとるランナークラスを持っています。 runメソッドを実行する必要がラムダ式を使ってクラス内の特定のメソッドを実行する方法
class MyController {
public void run(Runnable command) {
}
public void run(Callable command) {
}
}
他のクラスは
controllerInstance.run(() -> {...});
がどのようにラムダ式ベースのコードは、(Runnableを)実行または実行(コーラブル)を呼び出すことが決定しないのですか?このデフォルトの動作を変更する方法はありますか?
私は、第2のメソッド 'call()'の名前を変更することで明示的にすることをお勧めします。 名前付きのメソッドを使用する方法はありますが(下の回答を参照)、すべてがあまりエレガントでないコードにつながる傾向があります。 – lukens