スレッドセーフな方法で遅延初期化されている static 変数を報告します。

異なるスレッドによる初期化の競合を防ぐため、static 変数の遅延初期化は適切な同期コンストラクトで行う必要があります。

遅延初期化ホルダークラスイディオムを導入するクイックフィックスが適切な場合に提案されます。 このイディオムは、クラスが使用されるまでは初期化されないことを JVM が保証しているという事実を利用しています。

例:


  class X {
    private static List<String> list;

    public List<String> getList() {
      if (list == null) {
        list = List.of("one", "two", "tree");
      }
      return list;
    }
  }

クイックフィックス適用後:


  class X {
    private static final class ListHolder {
      static final List<String> list = List.of("one", "two", "tree");
    }

    public List<String> getList() {
      return ListHolder.list;
    }
  }