繁体   English   中英

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

}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM