我下載的JDK源代碼(6u23 build b5)用於研究,而Eclipsed決定自動構建它。令人驚訝的是,它發現了錯誤。爲什麼發佈的Java源代碼中存在錯誤?
一些例子。
java.beans.MetaData,線1365:
ConstructorProperties annotation = constructor.getAnnotation(ConstructorProperties.class);
類型不匹配:不能從註釋轉換成ConstructorProperties
java.awt.AWTEvent中,線220:
AWTAccessor.setAWTEventAccessor(new AWTAccessor.AWTEventAccessor() {
類型new AWTAccessor.AWTEventAccessor(){}必須實現繼承的抽象方法AWTAccessor.AWTEventAccessor.getAccessCont rolContext(AWTEvent)
我認爲這段代碼應該是絕對正確的,如果不是可以學習的Java用法的最佳示例之一。但是,這甚至沒有編譯!
更新:我將java包導出到單個項目中,刪除了java包的默認導入以避免可能的名稱空間衝突並使用JVM 1.6.0來構建它。
什麼Java版本你有編譯它?請注意,軟件中可能總是存在錯誤,即使它具有高質量 - 畢竟它是軟件,不能100%無錯誤。它懷疑甲骨文會提供不可編譯的代碼(但是誰知道,errare humanum est;)) - 所以尋找你的構建環境和他們之間的差異。 – Thomas
幾乎代碼庫中的所有代碼都是一個很好的例子,但是有很多不好的例子。 :( –
@Peter對於每個大型項目,我都認爲這是真的,JDK源代碼和API設計對於他們的年齡是相當不錯的,事實上1.0 API必須在很短的時間內設計(現在希望沒有人會將可複製的實現作爲偉大的架構設計的典範) – Voo