报告以非线程安全方式延迟初始化的 static 变量。

应该使用适当的同步构造来完成 static 变量的延迟初始化,以防止不同的线程执行冲突的初始化。

如果适用,建议使用引入初始化 holder 类习惯用法的快速修复。 这个习惯用法利用了 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;
    }
  }