Java ソース コードを読んでいるときに、2 つの小さな質問に遭遇します。Sun がこのようなコードを書く理由がわかりません。ここに質問があります (JDK バージョン:1.6):
質問1:
java.util.concurrent.PriorityBlockingQueue#offer(E e):
public boolean offer(E e) {
final ReentrantLock lock = this.lock;
lock.lock();
try {
boolean ok = q.offer(e);
assert ok;
notEmpty.signal();
return true;
} finally {
lock.unlock();
}
}
メソッドブロックでローカル最終ReentrantLock
変数を定義するのはなぜですか?グローバル変数を直接使用しないのはなぜlock
ですか?
質問2:
このメソッドはオブジェクトjava.text.NumberFormat#getInstance(Locale desiredLocale, int choice):
を作成しDecimalFormat
ますが、戻り値の型はNumberFormat
です。戻り値の型を as にしないのはなぜDecimalFormat
ですか?