1. ホーム
  2. java

[解決済み] private static final fields

2022-02-15 19:55:57

質問

これだけははっきりさせておきたいのですが。の違いは何ですか?

private static int STUDENT_AGE = 18; 

そして

private static final int STUDENT_AGE = 18; 

をフィールド内に置くのですか?

Jon Skeetは、"not related to a particular instance at all"と説明していますが、なるほどと納得しました。では、この場合、finalは具体的に何をするのでしょうか?

以下のコードが動作しないのは、学生の年齢がstatic finalとして割り当てられているからでしょうか?デフォルトの年齢は一切上書きできないということでしょうか。では、デフォルト以外の年齢を指定するコンストラクタを作ることは可能なのでしょうか?

private String myName;
private String myAddress;
private int myYearEnrolled;
private String myGender; 
private static final int STUDENT_AGE = 18; 

public Student(String name, String address, int year, String gender) {
    myName = name;
    myAddress = address;
    myYearEnrolled = year;
    myGender = gender; 
}

   public Student(int age)
{
     STUDENT_AGE = age; 
}

解決方法は?

変数が宣言されると final その値は後で変更することはできません。提供されたコードサンプルでは、特定の活動に対する生徒の年齢を定義するための定数が宣言されています。これは、ある活動において、生徒の年齢をこの定数と比較するという条件があることを意味しているのかもしれません。もし学生の年齢が18歳より大きい場合、彼だけが先に進むかどうか許可されます。