强制Java编译器不要内联最终的静态字段

时间:2014-02-25 18:36:20

标签: java eclipse

我发现有时,如果不是总是,静态最终字段将在字节码级别内联。出于某种原因,我不喜欢这种情况发生。如何关闭此编译选项?特别是在Eclipse 4中。(不涉及源代码。)

由于

1 个答案:

答案 0 :(得分:1)

我不知道编译时选项。

Puzzle 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 booksee here for a more complete discussion