声纳“使瞬态或可序列化”错误

Nex*_*nts 8 java serialization spring json

我有以下可序列化类(实现可序列化):

public class Test implements Serializable{

private String id;

private Map<String,Object> otherProperties;

}
Run Code Online (Sandbox Code Playgroud)

但是,似乎此属性会导致序列化出现一些问题:

在此处输入图片说明

我怎么解决这个问题 ?

此外,不使这种瞬态或可序列化有什么缺点吗?我能完全序列化这个类吗?

Jac*_* G. 8

Map接口并没有扩展Serializable接口,这就是为什么声纳警告你。

序列化 的实例时Test,必须选择是否要otherProperties序列化。

如果你想要序列otherProperties,则字段应标记为transient

private transient Map<String, Object> otherProperties;
Run Code Online (Sandbox Code Playgroud)

否则,您可以将 的类型更改为该otherProperties实现的Map实现Serializable,例如HashMap

  • 如果我们将 otherProperties 更改为 HashMap 类型或 Map 接口的任何其他实现,sonar 将引发另一个问题,迫使我们在变量中使用 Interface 类型。 (2认同)