[英]Naming Convention for Uninitialized Constants Java
我将我的常量命名为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
不是常数。 它只是一个静态字段,初始化后不会改变。 我会坚持使用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();
}
}
这样,您会感觉到您正在使用常量,并且不会破坏封装。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.