声纳错误 - 使该成员“受保护”

3 java protected sonarqube

在下面的课程中,我声明 myMap

public class AllMap {
    public static final Map<String, String> myMap= new HashMap<>();
    static {
        Map.put("yy", "AA");
        Map.put("xx", "BB");
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要访问其他班级的地图。

public class Test {
    FieldMap.Map;
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但声纳在第一堂课上发出警告:

使该成员“受保护”。

在线上

public static final Map<String, String> myMap = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

我应该忽略此警告还是应该将其更改为受保护?

aga*_*rys 5

如果您需要访问其他类中的地图,那么您应该保护它免受修改:

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class AllMap {
    public static final Map<String, String> myMap;
    static {
        final Map<String, String> tmpMap = new HashMap<>();
        tmpMap.put("yy", "AA");
        tmpMap.put("xx", "BB");
        myMap = Collections.unmodifiableMap(tmpMap);
    }
}
Run Code Online (Sandbox Code Playgroud)

您仍然可以使用它,SonarQube 不会将此标记为错误(因为地图是只读的)。

阅读更多关于Collections#unmodifiableMap(Map) 的信息