簡體   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