匿名の内部クラスから値を取得する必要がありました。内部クラスは近く、この恐ろしい回避策につながるコースの最後の変数、オーバーすることができます:内部クラスが単一要素配列を介して値を返すのを避けるにはどうすればよいですか?
public String sampleMethod(){
final String[] output = new String[1];
findResult(new SampleOperation(){
@Override
private void perform(){
output[0] = "result";
}
});
return output[0];
}
private void findResult(SampleOperation op){
op.perform();
}
private static interface SampleOperation {
void perform();
}
明らかに簡略化した例。ここでクラスは簡単に取り除くことができますが、問題の元がそこにあります。依存関係がさらにダウンする(findResult()の内部で、トリガされる必要のあるラッチなど)場合、そのようなクラスのラップを解除することは実用的ではありません。
最後の配列をラップするとアクセス可能ですが、これは私が今までに見つけた最悪の匂いの1つです。
このようなデリゲートから戻り値の型を取得するには、元気な方法がありますか? (つまりこれを使用しないでください)
匂いが悪いです。致命的なコマンドパターンの使用のような匂い。深く暗い場所から、エンジニアリングされたプログラムが生成される – nsfyn55