1

当我将 Java 类定义为 Serializable 时,Eclipse 并没有警告我某些成员不是 Serializable,这可能会导致应用程序在 @runtime 时序列化失败。

我找不到任何设置来启用成员验证。

关于如何验证 Serializable 类的成员也是 Serializable 的任何想法?

谢谢

4

2 回答 2

0

对不可序列化类型的引用是合法的,该类型最终在运行时指向可序列化对象:


import java.io.Serializable;

public class Test implements Serializable {

private Object data;

public void setData(Object data) {
    this.data = data;
}

}

如果你后来写了类似的东西:


    Test t1 = new Test();
    Test t2 = new Test();

t1.setData("Serializable");
t2.setData(new Object());

序列化 t1 不会有问题,但会在 t2 上崩溃。

于 2011-03-30T12:52:26.637 回答
0

假设没有人想出直接在 eclipse 中执行此操作的方法,我会推荐 FindBugs 插件,它有一个规则SerializableIdiom,我认为应该突出您担心的问题。

如果需要,我可以添加有关规则的更多详细信息。不过,它们很难格式化以便在这里显示,所以我放弃将它们添加到原始答案中

于 2011-03-30T10:15:52.380 回答