我正在閱讀Java源代碼,遇到兩個小問題。我不知道爲什麼Sun這樣寫代碼,這裏有問題(JDK版本:1.6):關於硬性理解的兩個問題Java代碼
問題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
。爲什麼不使返回類型爲DecimalFormat
?
您可能要將此分成2個完全不同的問題,因爲他們是不相關的 – DWright
@DWright:是的,我將在未來做到這一點,謝謝你的建議 – hiway
的API是它是什麼。除非你能抓住寫它的人,否則爲什麼沒有意義。 #1似乎完全沒有意義,除非它涉及內存模型規則。重新編號2,請注意,所有'getInstance()'方法都返回'NumberFormat',而不僅僅是那個。 – EJP