【Java】コンストラクタでstaticなfield値の設定

IT
  • 確認したかったこと
    • コンストラクタでstaticなフィールドを設定したとき、その設定値は有効な値であるか
  • 結論:有効
  • ちょっと分からなくなってしまったので、検証

やったこと

mainから

  1. staticなフィールド値を参照
  2. コンストラクタを呼び出し
  3. 再度staticなフィールド値を参照

の順で値が1と3で変わっているか確認

サンプルコードと実行結果

サンプルコード

public class main {
    public static void main(String[] args){
        // nullが返る
        System.out.println("コンストラクタ呼び出し前:" + StaticValueClass.strValue);

        // コンストラクタ呼び出し
        StaticValueClass svc = new StaticValueClass("Test");

        // コンストラクタでの設定が有効であればTest、無効ならnull
        System.out.println("コンストラクタ呼び出し後:" + StaticValueClass.strValue);
    }
}
public class StaticValueClass {
    public static String strValue = null;

    // コンストラクタでstrValueをセット
    public StaticValueClass(String str){
        strValue = str;
    }
}

実行結果

  • コンストラクタ呼び出し前と後で値が変わっていることが確認できた

コメント

タイトルとURLをコピーしました