我有以下可序列化的类(可序列化的实现):
public class Test implements Serializable{ private String id; private Map<String,Object> otherProperties; }
但是,该属性似乎导致了序列化方面的一些问题:
我怎么才能解决这个问题呢?
另外,不使其成为瞬时的或可序列化的有什么不利之处吗?我能够完全序列化这个类吗?
q5iwbnjs1#
Map接口没有**扩展Serializable接口,这就是声纳向您发出警告的原因。
Map
Serializable
序列化Test示例时,必须选择是否要序列化otherProperties。
Test
otherProperties
如果您不想要序列化otherProperties,则应将该字段标记为transient:
transient
private transient Map<String, Object> otherProperties;
否则,您可以将otherProperties的类型更改为实现Serializable的Map的实现,例如HashMap。
HashMap
fnatzsnv2#
如果这是一个选项(例如,如果您使用Jackson来(反)序列化您的类),那么从您的Test类中删除Serializable标记。序列化仍然有效,并且您将消除声纳中的警告。
2admgd593#
应指定Map值类型以扩展可序列化:
public class Test<T extends Serializable> implements Serializable{ private String id; private Map<String,T> otherProperties; }
3条答案
按热度按时间q5iwbnjs1#
Map
接口没有**扩展Serializable
接口,这就是声纳向您发出警告的原因。序列化
Test
示例时,必须选择是否要序列化otherProperties
。如果您不想要序列化
otherProperties
,则应将该字段标记为transient
:否则,您可以将
otherProperties
的类型更改为实现Serializable
的Map
的实现,例如HashMap
。fnatzsnv2#
如果这是一个选项(例如,如果您使用Jackson来(反)序列化您的类),那么从您的
Test
类中删除Serializable
标记。序列化仍然有效,并且您将消除声纳中的警告。2admgd593#
应指定Map值类型以扩展可序列化: