2009-12-24 7 views
0

Tout d'abord, Joyeux Noël à tous!JYAML: Sérialiser/désérialiser les classes imbriquées/internes

Maintenant à ma question: Disons que j'ai la classe Outer avec une classe interne Inner. Comme un champ dans Outer, j'ai un List<Inner>, que je veux ensuite vider dans un fichier YAML. Je le fais comme ceci:

Outer o = new Outer(); 
o.innerList = new ArrayList<Inner>(); 
o.innerList.add(new o.Inner()); 
... 
Yaml.dump(o, new File("test.yml"); 

Cela me donne l'exception: Exception in thread "main" org.ho.yaml.exception.ObjectCreationException: Error near line 0: Can't create object of type class game.Outer$Inner using default constructor.

J'ai essayé avec un constructeur personnalisé et changer le niveau d'accès au public, sans aide. Des idées?

Répondre

0

SnakeYAML a beaucoup d'exemples avec des classes internes. A quoi ressemble le document YAML (test.yml)? Est-ce que Inner est une classe interne statique?

+0

J'essaie de sérialiser pour voir comment la sortie va ressembler, afin de créer mes propres documents pour l'analyse. Non, Inner n'est pas statique. Je vais jeter un coup d'œil à SnakeYAML. –

+0

Je crains que ce ne soit pas possible si la classe interne n'est pas statique. Il n'est pas possible de représenter le lien à son parent dans un document YAML. – Andrey

+0

Vous pouvez essayer de sérialiser en XML d'abord pour voir si elle est visible. S'il est possible de créer un fichier XML, il est possible de créer YAML. – Andrey

0

La première chose à vérifier est que YAML prend en charge la sérialisation de la classe interne.

Questions connexes