WeakReference、_components の Collections.synchronizedList があります。
コンパイラが文句を言うことを予想して、次のようなものを書きました。
public boolean addComponent2(Component e) {
synchronized (_components) {
return _components.add(new WeakReference<Component>(e));
}
}
しかし、コンパイラは完全に満足しています。List.add() が TRUE を返すことに注意してください。同期ブロックから出るとロックが解放されますが、これは奇妙に見えませんか? これは、ループで return を使用するのと同様に、ブロック内の「穴」のようなものです。
このようなコードを保守することに満足しますか?
ベストアンサー1
ループから戻る場合や、try
適切なfinally
ブロックを持つブロックから戻る場合もまったく問題ありません。意味を理解していれば、完全に意味がわかります。
これは、ローカル変数を導入するよりも確かに簡単なコードです。
// Ick - method body is now more complicated, with no benefit
public boolean addComponent2(Component e) {
boolean ret;
synchronized (_components) {
ret = _components.add(new WeakReference<Component>(e));
}
return ret;
}