【发布时间】:2016-05-17 20:19:21
【问题描述】:
我知道这样声明的变量:
public class Example {
public static final int MY_CONSTANT = 10;
}
被认为是一个 Java 常量。我真的不明白为什么不能将仅声明为 final 的变量视为常量?
【问题讨论】:
-
我真的不明白为什么一个只声明为 final 的变量不能被认为是一个常量 你问的是不是用
static修改的?或者没有在声明时初始化?您能否澄清在哪种情况下您认为它不被视为常量?你的意思是 constant 是不变的还是你的意思是 constant 就像 JLS 中定义的 constant expression 一样? -
我已将此标记为另一个问题的副本,因为您问的是完全相同的问题,但我必须说我发现那里的答案相当不令人满意。特别是,JLS 表示“常量变量是原始类型的最终变量或使用常量表达式初始化的 String 类型(第 15.28 节)。”,其中没有提及
static。 -
@Andy Turner:是的,即使局部变量也可以是常量。如果您想玩得开心,可以在
switch语句中使用case标签等局部常量,或在局部class的注解中引用它们...