1

我正在使用 SonarQube 6.7.3 和 Sonar java 插件 5.3

我有一个带有映射作为实例变量的 Serializable java 类。1. 使用 null 显式初始化时,地图显示 S1948 违规。2. 当显式空初始化被删除时,映射没有显示任何违规。

同样可以在下面的屏幕截图中看到。你能帮我理解两者之间的区别吗?

截屏: 在此处输入图像描述

4

1 回答 1

1

Map 的一些实现是可序列化的,而另一些则不是。因此,如果您将其初始化为 null,它将引发规则,因为 Sonar 无法知道您将使用什么实现。

这篇文章解释了一切: Java 为什么 Map of Map (ex: Map<String,Map<String,String>>) not serializeable

于 2018-06-18T12:33:41.940 回答