声纳“使瞬时或可串行化”错误

6pp0gazn  于 2022-09-18  发布在  Spring
关注(0)|答案(3)|浏览(179)

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

public class Test implements Serializable{

private String id;

private Map<String,Object> otherProperties;

}

但是,该属性似乎导致了序列化方面的一些问题:

我怎么才能解决这个问题呢?

另外,不使其成为瞬时的或可序列化的有什么不利之处吗?我能够完全序列化这个类吗?

q5iwbnjs

q5iwbnjs1#

Map接口没有**扩展Serializable接口,这就是声纳向您发出警告的原因。

序列化Test示例时,必须选择是否要序列化otherProperties

如果您想要序列化otherProperties,则应将该字段标记为transient

private transient Map<String, Object> otherProperties;

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

fnatzsnv

fnatzsnv2#

如果这是一个选项(例如,如果您使用Jackson来(反)序列化您的类),那么从您的Test类中删除Serializable标记。序列化仍然有效,并且您将消除声纳中的警告。

2admgd59

2admgd593#

应指定Map值类型以扩展可序列化:

public class Test<T extends Serializable> implements Serializable{

private String id;

private Map<String,T> otherProperties;

}

相关问题