Java eclipse可序列化成员验证
当我将Java类定义为可序列化时,Eclipse不会警告我某些成员不可序列化,这可能会导致应用程序序列化@runtime失败 我找不到任何启用成员验证的设置 你知道如何验证可序列化类的成员也是可序列化的吗Java eclipse可序列化成员验证,java,eclipse,compilation,serializable,Java,Eclipse,Compilation,Serializable,当我将Java类定义为可序列化时,Eclipse不会警告我某些成员不可序列化,这可能会导致应用程序序列化@runtime失败 我找不到任何启用成员验证的设置 你知道如何验证可序列化类的成员也是可序列化的吗 谢谢假设没有人能在eclipse中直接实现这一点,我建议使用FindBugs插件,它有一个规则SerializableSigm,我认为这应该突出您担心的问题 如果需要,我可以添加更多有关规则的详细信息。它们在这里很难格式化显示,因此我放弃了将它们添加到原始答案中引用不可序列化的类型是合法的,该
谢谢假设没有人能在eclipse中直接实现这一点,我建议使用FindBugs插件,它有一个规则
SerializableSigm
,我认为这应该突出您担心的问题
如果需要,我可以添加更多有关规则的详细信息。它们在这里很难格式化显示,因此我放弃了将它们添加到原始答案中引用不可序列化的类型是合法的,该类型在运行时指向可序列化的对象: } 如果你写的是:
序列化t1不会有问题,但会在t2上爆炸。这就是为什么数据类型可能应该是可序列化的,而不是对象。t这样,如果您愿意强制所有设置器只接受可序列化参数(例如,public void setData(可序列化数据)),则不能只设置任何对象,也不会在运行时失败{...} )那么你就不会有原来的问题了,因为所有不可序列化的赋值都会在编译时被捕获。这正是我想要强制执行的,但是编译器不会大声说可序列化的成员是可序列化的。如果你考虑一下我提供的示例,你会发现编译器没有办法强制执行这个是在运行时解决的,而不是在编译时解决的。我说的仅仅是警告,不需要把它变成错误
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());