Java中没有参数构造函数和反序列化
Java中没有参数构造函数和反序列化,java,spring,hibernate,serialization,serializable,Java,Spring,Hibernate,Serialization,Serializable,反序列化使用可序列化接口机制使用反射将对象字节反序列化为对象。但是在这个过程中没有调用默认的no arg构造函数,因此不需要它。但是所有像Spring、Hibernate等框架都不需要arg构造函数,即使它们使用反射。这是矛盾的还是我遗漏了什么?内置标准反序列化不使用标准反射创建实例 标准反射不能在不调用构造函数(不一定是无参数构造函数)的情况下创建实例。因此,任何只使用标准反射的框架都需要调用构造函数来创建实例 要在不调用构造函数的情况下创建实例,您需要某种特定于jvm供应商的扩展,如safe
反序列化
使用可序列化
接口机制使用反射
将对象字节反序列化为对象。但是在这个过程中没有调用默认的no arg构造函数
,因此不需要它。但是所有像Spring、Hibernate
等框架都不需要arg构造函数,即使它们使用反射。这是矛盾的还是我遗漏了什么?内置标准反序列化不使用标准反射创建实例
标准反射不能在不调用构造函数(不一定是无参数构造函数)的情况下创建实例。因此,任何只使用标准反射的框架都需要调用构造函数来创建实例
要在不调用构造函数的情况下创建实例,您需要某种特定于jvm供应商的扩展,如
safe
。使用这些扩展取决于框架开发人员,许多人决定不使用。(据我所知,XStream是唯一一个实际使用它的类)另一方面,超类no-arg构造函数被调用。。。是否确认?所有构造函数(除了java.lang.Object
)都将调用另一个构造函数(超级类或同一个类上的构造函数)@CodeScale不确定“另一方面”是什么意思。标准序列化不调用任何构造函数,实例只是存在。仅在反序列化期间进行对话。。在对象的正常使用过程中不可用creation@ghostrider不知道到底用了什么。它是一个jvm内置功能。所以它可以用任何东西。但它不能只使用标准反射,因为它不能提供足够的功能。