Javaの匿名クラスから出力を取得するにはどうすればよいですか? .NETではクロージャを使用します。匿名クラスからの出力?
executor = Executors.newSingleThreadExecutor();
final Runnable runnable = new Runnable() {
public Exception exception;
@Override
public void run() {
try {
doSomething();
}
catch (Exception exception) {
// I'd like to report this exception, but how?
// the exception member is not readable from outside the class (without reflection...)
this.exception = exception;
}
}
};
executor.submit(runnable);
// Here I'd like to check if there was an exception
私はRunnableを使用しないでください。 – ripper234
結果を得たい場合は、Callableを使用する必要があります。 Runnableからの結果として値を返す方法はありません(IIRCはrunnablesがnullを返すために 'get'を呼び出します) – andri
むしろ、正しく実行したいタスクは戻り値がありませんが、例外について通知したいと思います。 Runnable.run()は例外を宣言しないので、使用できません。 Callableは何かを返す必要があります。 私は、呼び出し可能な例外を返すことができますが、それは少し最適ではないようです。理想的には、 '同等の実行'が例外をスローすることができますが、voidを返す別の同様のクラスが必要です。しかたがない。 – ripper234