Java 为什么会出现“无有效构造函数”异常?

Java 为什么会出现“无有效构造函数”异常?,java,Java,我正在序列化一个类。我的结构如下: class A { class B { public B(); ... } } class C extends A { class D extends A.B implements Serializable { public D(); } } 我可以写C.D类型的对象,但每当我试图读回它们时,就会出现异常: java.io.InvalidClassException: C$D; C$D; no valid constructor 有什么想法吗 为了说明这一

我正在序列化一个类。我的结构如下:

class A { class B { public B(); ... } }
class C extends A { class D extends A.B implements Serializable { public D(); } }
我可以写C.D类型的对象,但每当我试图读回它们时,就会出现异常:

java.io.InvalidClassException: C$D; C$D; no valid constructor
有什么想法吗

为了说明这一点,它在这里说,当没有接受任何参数的构造函数时,就会抛出这个异常。但是我有这些构造函数。

您的问题是类A.B需要可序列化。如果添加该接口,您可以很高兴地保存和恢复对象

当您序列化一个扩展嵌套类的类时,这肯定是一个极端情况!它需要访问父对象的成员变量,否则您将拥有一个partial对象。这涉及序列化父级

错误消息当然更好,是的-通常只有在存在循环依赖项或如您所说缺少任何参数构造函数的情况下才能获得无效构造函数。

您的问题是类A.B需要可序列化。如果添加该接口,您可以很高兴地保存和恢复对象

当您序列化一个扩展嵌套类的类时,这肯定是一个极端情况!它需要访问父对象的成员变量,否则您将拥有一个partial对象。这涉及序列化父级

错误消息肯定会更好,是的-通常只有在存在循环依赖项或如您所说缺少任何args构造函数的情况下才会获得无效构造函数