コールバックを定義していて、そのコールバックをそれ自体から参照したいと考えています。コンパイラはこれを好まず、コールバックを参照する変数が初期化されていないと主張します。コードは次のとおりです。
final Runnable callback = new Runnable() {
public void run() {
if (someCondition()) {
doStuffWith(callback); // <<--- compiler says "the local variable callback may not be initialized"
}
}
};
// Here callback is defined, and is certainly defined later after I actually do something with callback!
内部メソッドのコールバックが定義されるまでにコンパイラが間違っていることは明らかです。このコードが問題ないことをコンパイラに伝えるにはどうすればよいですか、またはコンパイラをなだめるために別の方法で書くにはどうすればよいでしょうか? 私はJavaをあまりやったことがないので、ここで間違ったツリーを吠えている可能性があります. これを行うための他の慣用的な方法はありますか?私にはかなり単純な構造のように思えます。
編集: もちろん、これは簡単すぎました。すべての迅速な回答に感謝します!