gpt4 book ai didi

java - 如何查找哪个字段导致不可序列化异常

转载 作者:行者123 更新时间:2023-12-02 09:02:53 25 4
gpt4 key购买 nike

有没有办法列出 myObject 内的所有字段负责 java.lang.IllegalArgumentException: Non-serializable object异常,

我知道这是在 objectOutputStream.writeObject(myObject); 处抛出的

据我所知,myObject里面的所有对象都引用了正在实现Serializable界面。

注意:myObject具有很深的引用层次结构,这使得手动浏览它并找到罪魁祸首变得极其乏味。

编辑:我想以编程方式执行此操作。

最佳答案

如果您想以编程方式检查哪个实例字段未实现可序列化,请使用反射。获取该类的所有字段。现在迭代它并检查它是否是可序列化的实例。

尝试下面的方法。请忽略编译错误,因为我还没有运行它

public static void main(String[] args) throws Exception {
Object o = new X();

for (Field field : o.getClass().getFields()) {
if (!Serializable.class.isAssignableFrom(field.getType())) {
System.out.println("Field " + field + " is not assignable from type " + o.getClass());
}
}

}

请注意,如果您不想序列化变量,也可以将其标记为 transient 变量。因此,如果您不想序列化每个实例变量,则不必是可序列化类型。

关于java - 如何查找哪个字段导致不可序列化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16916055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com