Salut à tous,

Je souhaite travailler avec une classe qui possède une interface comme élément.
Cette interface me sert en fait à masquer différentes classes d'énum qui peuvent être élément de ma classe principale.

Utilisant JAXB de la manière suivante je n'ai aucun problème pour marshmaller une instance de classe. En revanche l'operation inverse me pose problème.

Ici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
@XmlRootElement
Classe MaClasse {
 
@XmlAnyElement
private TypeInterface type;
..
}
 
@XmlSeeAlso({TypeAEnum.class, TypeBEnum.class})
public interface TypeInterface {
 
}
 
et ses 2 instances :
@XmlRootElement
public enum TypeAEnum implements TypeInterface{}
 
@XmlRootElement
public enum TypeBEnum implements TypeInterface{}
Lorsque je marshall mon instance j'obtiens la balise suivante :
<ns2:typeAEnum>typeAvalue</ns2:typeAEnum>

Mais lorsque je veux unmarshmaller le doc .xml, l'erreur suivante apparâit :
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Can not set www.TypeInterface field www.MaClasse.type to com.sun.org.apache.xerces.internal.dom.ElementNSImpl

Une solution ?