当我在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/