【问题标题】:Sonar "Make transient or serializable" error声纳“使瞬态或可序列化”错误
【发布时间】:2020-04-02 18:56:45
【问题描述】:

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

public class Test implements Serializable{

private String id;

private Map<String,Object> otherProperties;

}

但是,这个属性似乎导致了一些序列化问题:

我该如何解决这个问题?

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

【问题讨论】:

标签: java json spring serialization


【解决方案1】:

Map 接口扩展Serializable 接口,这就是 Sonar 警告您的原因。

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

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

private transient Map<String, Object> otherProperties;

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

【讨论】:

  • 如果我们将 otherProperties 更改为 HashMap 类型或 Map 接口的任何其他实现,sonar 将引发另一个问题,迫使我们在变量中使用 Interface 类型。
  • 如果我们这样做,那么在 Criteria Mata 模型中该文件将被删除。
【解决方案2】:

如果可以选择(例如,如果您使用 Jackson 来(反)序列化您的课程),请从您的 Test 课程中删除 Serializable 标记。序列化仍然有效,您将摆脱 Sonar 中的警告。

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 2019-02-08
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 2022-08-18
    • 2018-09-12
    • 2016-12-12
    相关资源
    最近更新 更多