我發現有時(如果不是總是如此)靜態最終字段將在字節碼級別內聯。出於某種原因,我不喜歡這種情況發生。如何關閉此編譯選項?特別是在Eclipse 4.(無需接觸源代碼。)強制Java編譯器不要內聯最終靜態字段
感謝
我發現有時(如果不是總是如此)靜態最終字段將在字節碼級別內聯。出於某種原因,我不喜歡這種情況發生。如何關閉此編譯選項?特別是在Eclipse 4.(無需接觸源代碼。)強制Java編譯器不要內聯最終靜態字段
感謝
我不知道的編譯時間選項。
拼圖93:Class Warfare,在Java Puzzlers這本書討論了這一點。可能會產生錯誤,因爲null沒有被「內聯」。
有通過什麼都不做的函數來指代他們的解決方法,例如:
public class Words {
private Words() { }; // Uninstantiable
public static final String FIRST = ident("the");
public static final String SECOND = ident(null);
public static final String THIRD = ident("set");
private static String ident(String s) {
return s;
}
}
顯然,這需要大量修改源代碼。不是你想要的......
謝謝。但如果可能的話,我只是在考慮編譯器選項。 – huoenter
您希望編譯器從靜態更換分析的unmutable代碼停下來?做什麼的? – Smutje
你想通過這樣做完成什麼? – ApproachingDarknessFish
@Smutjie部分使用動態分析的軟件工程研究。使用靜態final字段與在源代碼級別對程序中的常量進行硬編碼不同。 – huoenter