在下面的课程中,我声明 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)
我应该忽略此警告还是应该将其更改为受保护?
如果您需要访问其他类中的地图,那么您应该保护它免受修改:
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) 的信息。