sonarQube报告错误-使字段瞬态或可序列化

时间:2018-09-03 10:27:05

标签: java serialization sonarqube sonarlint

运行声纳分析后,我遇到错误了

  

使“ getPreAHistFlt”成为瞬态或可序列化的“

我们如何解决此问题?

代码段:

mongoCursor

3 个答案:

答案 0 :(得分:3)

getPreAHistFltMsg extends Exception,它是Throwable的子类; Throwable实现Serializable,因此Throwable的所有子类也可传递地实现Serializable

大概com.sanju.p2.GetPreAHistFlt没有实现Serializable。这样,如果您尝试在该字段非空的情况下序列化一个getPreAHistFltMsg,它将失败,因为该字段的值无法序列化。

要么:

  • 将字段设为transient,从序列化中排除该字段;
  • 使GetPreAHistFlt实现Serializable(但要注意 Effective Java 项,有关为什么为什么要实施Serializable是您在执行操作之前应仔细考虑的问题);
  • 从中提取相关的(可序列化的)字段。

答案 1 :(得分:1)

我认为解决该问题的最简单方法是更改​​您的类GetPreAHistFlt以实现Serializable接口。

答案 2 :(得分:0)

这可以通过使类GetPreAHistFlt可序列化来实现。