次のことが可能かどうかわかりません。私は、すなわちJavaで再帰ラムダ関数を実装する
reconnects = 3;
Runnable executeAfter =() -> {
if (--reconnects < 0) {
println("%nStop using port %d.", this.port);
//...
} else { // try to reconnect
println("%nReconnecting...");
cmdRun = new CmdRun(command, executeAfter);
(new Thread(cmdRun)).start();
//...
}
};
が、このことも可能のようなものです、Runnable
自身を含むようにRunnable
のrun()
方法をご希望ですか?もしそうなら、どうですか? (CmdRun
のコンストラクタはCmdRun(String command, Runnable executeAfter)
です)
これは動作します。どうもありがとうございました。 – dotwin
でも動作しますが、再試行/再接続などの再帰的な操作や、再帰の各レベルでの新しいスレッドの生成はエラーが発生する可能性があります。デザインの変更を検討する –