我碰巧在我的工作地點遇到了Java代碼。這裏是場景:有2個類 - ClassA
和ClassB
。導入的java類中的公共靜態final變量
ClassA
除了4個公共靜態的最終字符串值之外什麼也沒有。其目的是使用像ClassA.variable
這些值(不要問我爲什麼,這不是我的代碼)。
ClassB
進口ClassA
。我編輯了ClassA
中的字符串值並編譯了它。當我運行ClassB
時,我可以看到它使用的是舊值 - 而不是新值。我必須重新編譯ClassB
才能使用ClassA
的新值! (我不得不重新編譯其他類,導入ClassA
!)
這是因爲JDK 1.6還是我應該早些知道重新編譯ClassB
也!開導我。 :)
所以,你說公共靜態最終是編譯時間常量?不知道。認爲這只是一個常量,不能在運行時修改!謝謝你的幫助。 – 2009-11-07 14:28:40
好的anwser。如果你想看到變量被內聯,你可以使用javap來查看類是如何編譯的,例如「javap -c標誌」。 – 2009-11-07 14:31:55