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?
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. –
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
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