0
我發現當在一個項目中聲明一個常量(static final,在編譯時進行初始化)時,在編譯時其他項目中的引用被替換爲文字。編譯時避免用一個文字替換常量引用
看來,以避免這一點,必須引用的唯一途徑是指恆領域,而不是字面是聲明不變的一類(而不是接口),並省略「最終的」,例如:
public class MyClass {
public static String MY_CONSTANT = "The constant value";
}
不幸的是我編寫了一個充滿常量的界面,然後才明白這一點,現在爲了改變一個常量,我們必須確定引用它並重新編譯它們的所有項目。我擔心有什麼東西會溜走。
另外,沒有「最終」修飾符的常量並不完全一致,是嗎?
是否有一個編譯選項,可以通過文字抑制常量引用的替換?
您在Java知識中發現了一個漏洞。並記錄:是的,這在某種程度上是大型設置的問題,但**這是一個衆所周知的問題。任何合理的**構建系統**應該能夠處理該問題;通過**理解**依賴和需要重新編譯需要的所有類...... – GhostCat
不久前我們也犯過同樣的錯誤。 我們比改接口有getter-Methods。 和一個實現類。 請看看Joshua Bloch的「Effective Java」。項目19: 「僅使用接口來定義類型」 –