The following object did NOT work -
public class CreditCardVO implements Serializable {
private Long ccNumber;
private String ccName;
public CreditCardVO(Long ccNumber, String ccName) {
this.ccNumber = ccNumber;
this.ccName = ccName;
}
public Long getCcNumber() {
return ccNumber;
}
public String getCcName() {
return ccName;
}
}
When i added the no-args constructor and the annotations it worked!
@XmlAccessorType(XmlAccessType.FIELD)
public class CreditCardVO implements Serializable {
private Long ccNumber;
private String ccName;
public CreditCardVO(Long ccNumber, String ccName) {
this.ccNumber = ccNumber;
this.ccName = ccName;
}
private CreditCardVO() {
// for JAXB's Magic
}
public Long getCcNumber() {
return ccNumber;
}
public String getCcName() {
return ccName;
}
}
5 comments:
Hello,
Below is an alternate approach to handling immutable objects in JAXB using XmlAdapter:
Java XML Binding: JAXB and Immutable Objects
-Blaise
Better is use Private Default No Arg constructor and use static function to create objects
Hey! Ashish. I tried your solution but i am get Error while loading configuration file: Unable to create an instance of error. The class is not an abstract class. you have any idea on why I am getting this error?
Thnks for sharing knowledge
http://www.shaligram.com/index.php
I hate boilerplate, so my immutable objects always use public final fields and no getters, if I can get away with it.
With jaxb that means adapters (boilerplate galore!), so it has to be jackson-dataformat-xml. Sadly that does not support default namespaces, so you need to annotate every single field if you use a namespace. So you get boilerplate anyway, but alt least it is trivial boilerplate, and the actual java code (excluding annotations) is clean.
Post a Comment