当我在Java代码中定义常量值时,通常将它们声明为“ private static final”,但是最近我一直在维护将常量定义为“ private final”的代码。

我目前正在优化,想知道是否要“静态化”这些。

例如

public class X {
    private final String SOME_CONST = "Whatever";
}


上面的代码是否等效于(在运行时)以下代码,因此仅保留了1个“ SOME_CONST”副本?

public class X {
    private static final String SOME_CONST = "Whatever";
}


我本以为这是很基本的,但是我找不到任何答案。

[编辑]
有人回答了被拘禁的String实例。抱歉,我应该选择一个更好的示例,就我而言,它不仅是字符串,而且还有许多不同的类型(某些标准,某些用户定义)。

我对“私有最终”声明与“私有静态最终”声明的效果更感兴趣。

最佳答案

FindBugs有益地指出,这样的最终成员应该是静态的。可以从中推断出优化没有进行。

关于java - 在声明时分配了常量的最终成员是否在运行时针对“静态最终”进行了优化?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1239627/

10-12 04:45