未初始化常量的命名约定 Java

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();
    }

}

这样,您会感觉自己在使用常量,并且不会破坏封装。