Quand je marshall une instance de cette classe ...@XmlRootElement et <T étend Serializable> jette IllegalAnnotationExceptions
@XmlRootElement
public static class TestSomething<T extends Serializable> {
T id;
public T getId() {
return id;
}
public void setId(T id) {
this.id = id;
}
}
... l'exception suivante est lancée ...
com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
java.io.Serializable is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at java.io.Serializable
at public java.io.Serializable TestSomething.getId()
at TestSomething
java.io.Serializable does not have a no-arg default constructor.
this problem is related to the following location:
at java.io.Serializable
at public java.io.Serializable TestSomething.getId()
at TestSomething
Comment puis-je éviter cela (sans changer le paramètre de type à quelque chose comme <T>
)?
J'ai déjà trouvé ce guide, mais cela ne m'aide pas beaucoup. Quand je mets @XmlAnyElement à getId() et essaye de marshaler une instance de TestSomething je reçois com.sun.istack.SAXException2: impossible de marshaler le type "java.lang.Long" en tant qu'élément car il manque une annotation @XmlRootElement –