相关疑难解决方法(0)

如何处理Findbugs"可序列化类中的非瞬态非可序列化实例字段"?

考虑下面的课程.如果我针对它运行Findbugs,它将在第5行给出一个错误("可序列化类中的非瞬态非可序列化实例字段")但不在第7行.

1 public class TestClass implements Serializable {
2
3  private static final long serialVersionUID = 1905162041950251407L;
4
5  private Set<Integer> mySet;      // Findbugs error
6
7  private HashSet<Integer> myOtherSet;
8
9 }
Run Code Online (Sandbox Code Playgroud)

这是正确的,因为java.util.Set从不在其层次结构中实现Serializable,而java.util.HashSet也是如此.但是,最佳做法是针对接口而不是具体实现进行编码.

我怎样才能最好地处理这件事?

我可以在第3行添加@Suppresswarnings(justification ="No bug",values ="SE_BAD_FIELD").我的实际代码中有很多集合和列表,我担心它会丢失我的代码太多.

还有更好的方法吗?

java serialization findbugs

53
推荐指数
5
解决办法
6万
查看次数

标签 统计

findbugs ×1

java ×1

serialization ×1