2014-02-25 38 views
0

我發現有時(如果不是總是如此)靜態最終字段將在字節碼級別內聯。出於某種原因,我不喜歡這種情況發生。如何關閉此編譯選項?特別是在Eclipse 4.(無需接觸源代碼。)強制Java編譯器不要內聯最終靜態字段

感謝

+0

您希望編譯器從靜態更換分析的unmutable代碼停下來?做什麼的? – Smutje

+1

你想通過這樣做完成什麼? – ApproachingDarknessFish

+0

@Smutjie部分使用動態分析的軟件工程研究。使用靜態final字段與在源代碼級別對程序中的常量進行硬編碼不同。 – huoenter

回答

1

我不知道的編譯時間選項。

拼圖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; 
    } 

} 

顯然,這需要大量修改源代碼。不是你想要的......

無論buy the book,或see here for a more complete discussion

+0

謝謝。但如果可能的話,我只是在考慮編譯器選項。 – huoenter

相關問題