我命名我的常量,这些常量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;
}
}
}
问题:这些是否有任何命名约定?你会怎么做或去做?
我只是想知道一些东西;仅此而已!
从技术上讲,constantValue
不是一个常数。它只是一个静态字段,在初始化后不会更改。我会坚持太阳的命名惯例,并保留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();
}
}
这样,你会觉得你正在使用常量,并且你没有破坏封装。