【发布时间】:2017-05-11 14:12:13
【问题描述】:
【问题讨论】:
-
BondAxeMarkQuoteUpdate是否实现了Serializable? -
是的,它也实现了可序列化
标签: java serialization sonarqube
【问题讨论】:
BondAxeMarkQuoteUpdate 是否实现了Serializable?
标签: java serialization sonarqube
SonarQube 将此行标记为错误,因为 java.util.List 没有实现 java.io.Serializable。 java.util.ArrayList 是可序列化的,但 bondAxeMarkQuoteUpdates 是 protected,因此有人可以为其分配其他不可序列化的列表(例如在子类中)。
要解决问题,您可以:
transient,但在序列化过程中会被忽略private,以便SonarQube 可以验证没有人为其分配了不可序列化的列表【讨论】:
我收到同样的错误,解决方案是将变量上使用的类设置为Serializable。
例如,这显示一个错误,因为Object 不是Serializable:
private Map<String, Object> map = new HashMap<>();
案例中最简单的解决方案是转第二个参数Serializable。所以,你可以使用:
private Map<String, Serializable> map = new HashMap<>();
如果你使用自己的类(而不是Object),你可以把类放到implements Serializable。
【讨论】:
如规则文档中所述(您可以单击屏幕截图中的 ... 打开):https://sonarqube.com/coding_rules#rule_key=squid%3AS1948
此规则在非可序列化字段和非私有的集合字段上引发问题(因为它们可以在外部分配非可序列化值)
【讨论】:
private Map<String, Object> map = new HashMap<String, Object>(); 获得Object 序列化感到困惑