2010-10-18 4 views
0

J'ai deux classes similaires, qui ont simplement un nom de chaîne. Je voulais ajouter un adaptateur XML aux listes afin que je puisse obtenir une chaîne CSV de chacun d'entre eux.Comment utiliser l'objet générique Liste dans JAXB XmlAdapter

J'ai essayé de déclarer mon adaptateur comme ceci:

public class ListXmlAdapter extends XmlAdapter<String, ArrayList<Object>> { 

Mais quand j'essaie d'utiliser ce que je reçois des exceptions d'annotation illégales disant ListXmlAdapter n'est pas applicable pour tout type je tente de passer à l'annotation - telle comme test ci-dessous

@XmlElement 
@XmlJavaTypeAdapter(ListXmlAdapter.class) 
List<Test> tests = new ArrayList<Test>() 

Comment puis-je créer cet adaptateur que je veux utiliser pour quelques différents ArrayLists de différents types d'objets que j'ai?

Répondre

0

Si vous changez le type de propriété à ArrayList il fonctionnera:

@XmlElement 
@XmlJavaTypeAdapter(ListXmlAdapter.class) 
ArrayList<Test> tests = new ArrayList<Test>(); 
+0

Je travaille dans une application héritée ici. Cela aura-t-il d'autres effets secondaires? – Derek

+0

Il s'avère que cela a brisé le reste de mon code quand j'ai changé cela en ArrayList - J'ai eu quelques erreurs de suppression/création. Je posterai l'erreur exacte plus tard si je ne peux pas l'obtenir – Derek

+0

posté ceci comme une nouvelle question ici: http://stackoverflow.com/questions/3962875/dataintegrityviolationexception-when-i-change-a-list-variable-to -arraylist – Derek

0

Vous devez changer votre ListXmlAdapter pour travailler sur une liste à la place d'un ArrayList.

public class ListXmlAdapter extends XmlAdapter<String, List<Object>> 
Questions connexes