【发布时间】:2019-08-08 05:00:32
【问题描述】:
我将这个赋值给一个从文件中读取数据的静态变量:
public static final Map<String, Integer> MY_DATA_RESOURCE;
static {
MY_DATA_RESOURCE = parseAndTransformFile();
}
我希望所有类都可以公开访问这个变量,并且我想用这个方法调用来初始化它。这样做会触发 Sonar 投诉“但可变字段不应该是“公共静态的”。
我有那个 parseAndTransform 方法,我不想直接多次调用它并且每次都触发读取,我还想避免添加一个 getter 方法,它基本上是为数据访问添加第三层。
我还有其他选择吗?
【问题讨论】:
-
尝试删除 final 并查看声纳违规。
-
决赛是因为声纳投诉
-
public static final Map<String, Integer> MY_DATA_RESOURCE = Collections.unmodifiableMap(parseAndTransformFile());?