我将static final
的常量命名为ALL_UPPER_CASE
但是,有时您需要将字段用作常量,但不能将其定义为final
,因为它需要稍后初始化。
例如:
public class ExampleClass {
public static final int MAX_LENGTH = 100;
public static int constantValue;
public ExampleClass() {
// ...
}
private static void init(boolean condition) {
if (condition) {
constantValue = 42;
} else {
constantValue = 1;
}
}
}
问题:这些是否有任何类型的命名约定?你会怎么做或去做?
我只想知道一些事情;这就是全部!
答案 0 :(得分:1)
从技术上讲,constantValue
不是常数。它只是一个静态字段,在初始化后不会改变。我会坚持使用Sun命名约定并保留名称camelCase。
但是,在你给出的情况下,如果我绝对想表明这是一个常数,我会创建一个枚举:
public enum ExampleEnum {
TRUE_CONDITION(42), FALSE_CONDITION(1);
private final int value;
private ExampleEnum(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
然后ExampleClass将成为:
public class ExampleClass {
public static final int MAX_LENGTH = 100;
private static ExampleEnum myEnum;
private static void init(boolean condition) {
if (condition) {
myEnum = ExampleEnum.TRUE_CONDITION;
} else {
myEnum = ExampleEnum.FALSE_CONDITION;
}
}
public static int getConstantValue() {
return myEnum.getValue();
}
}
通过这种方式,您可以感觉到您正在使用常量,并且您没有打破封装。