1. ホーム
  2. java

[解決済み] Javaで定数を宣言するには?

2022-03-04 03:12:38

質問

いつも書いています。

public static final int A = 0;  

質問です。

  1. static final を宣言する唯一の方法です。 定数 をクラスで使うのですか?
  2. と書くと public final int A = 0;A はやはり 定数 または単なる インスタンスフィールド ?
  3. とは何ですか? インスタンス変数 ? との違いは何ですか? インスタンス変数 インスタンスフィールド ?

解決方法は?

  1. を使用することができます。 enum 型は、Java 5 以降では、ご指摘の目的に使用できます。型安全です。
  2. Aはインスタンス変数です。(static修飾子がついている場合はstatic変数になります)定数は値が変わらないという意味だけです。
  3. インスタンス変数は、クラスではなくオブジェクトに属するデータメンバです。インスタンス変数=インスタンスフィールドです。

インスタンス変数とクラス変数の違いということであれば、インスタンス変数はオブジェクトを作成するごとに存在します。一方、クラス変数は、作成されたオブジェクトの数にかかわらず、クラスローダーごとに1つだけコピーされます。

Java 5 以上 enum タイプ

public enum Color{
 RED("Red"), GREEN("Green");

 private Color(String color){
    this.color = color;
  }

  private String color;

  public String getColor(){
    return this.color;
  }

  public String toString(){
    return this.color;
  }
}

作成したenumの値を変更したい場合は、mutatorメソッドを用意します。

public enum Color{
 RED("Red"), GREEN("Green");

 private Color(String color){
    this.color = color;
  }

  private String color;

  public String getColor(){
    return this.color;
  }

  public void setColor(String color){
    this.color = color;
  }

  public String toString(){
    return this.color;
  }
}

アクセスする例です。

public static void main(String args[]){
  System.out.println(Color.RED.getColor());

  // or

  System.out.println(Color.GREEN);
}