繁体   English   中英

将“使私有或可序列化”错误标记为误报

[英]Marking "make private or Serializable" error as false-positive

在我的一个 Serializable 类中,Sonar 抱怨以下属性的“使 empName 为瞬态或可序列化”。 我将 Object 更改为 Serializable ( protected Map<String, Serializable> empName; )。 现在它给出了“将 empName 设为私有或可序列化”错误。 我的问题是,我可以将它标记为误报,因为如果值的类型是 Serializable 那么 Java 会在编译时或运行时给出错误吗?

财产声明:

protected Map<String, Object> empName;

谢谢

不。一般来说,这不是误报。 接口Map没有实现Serializable 因此, empName可能引用不可序列化的映射,这将导致运行时异常。

在某些情况下,这可能是误报。 例如,如果可以证明empName从未分配过不可序列化的映射,那么这是误报。

但是,由于您已将该字段声明为protected而不是final ,您需要分析包含此声明的类和所有可能的子类,并检查对该字段的所有分配。 (事实上​​,如果你想真正彻底,你还需要反思性的作业。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM