在使用JAXB时,如果有未初始化的final字段,可以通过以下步骤引入无参数构造函数:
public class MyClass {
public MyClass() {
// 无参数构造函数
}
}
@XmlTransient
。这样JAXB在进行序列化和反序列化时会忽略这些字段。public class MyClass {
@XmlTransient
private final String myField;
public MyClass() {
// 无参数构造函数
}
}
// 创建JAXBContext
JAXBContext context = JAXBContext.newInstance(MyClass.class);
// 创建Marshaller
Marshaller marshaller = context.createMarshaller();
// 序列化对象
marshaller.marshal(myObject, outputStream);
// 创建Unmarshaller
Unmarshaller unmarshaller = context.createUnmarshaller();
// 反序列化对象
MyClass myObject = (MyClass) unmarshaller.unmarshal(inputStream);
这样,当使用JAXB进行序列化和反序列化时,会自动调用无参数构造函数来实例化对象,并忽略未初始化的final字段。
领取专属 10元无门槛券
手把手带您无忧上云