2009-12-24 8 views
0

Прежде всего, с Рождеством!JYAML: Сериализация/десериализация вложенных/внутренних классов

Теперь на мой вопрос: Предположим, у меня есть класс Outer с некоторым внутренним классом Inner. Как поле в Outer, у меня есть List<Inner>, который затем я хочу сбросить в файл YAML. Я делаю это так:

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

Это дает мне исключение: 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.

Я попытался обеспечивая пользовательский конструктор и изменение уровня доступа общественности, никакой помощи. Есть идеи?

ответ

0

SnakeYAML имеет множество примеров с внутренними классами. Как выглядит документ YAML (test.yml)? Внутренний статический внутренний класс?

+0

Я пытаюсь сериализовать, чтобы посмотреть, как будет выглядеть вывод, чтобы создать мои собственные документы для синтаксического анализа. Нет, Inner не является статичным. Я посмотрю на SnakeYAML. –

+0

Я боюсь, что это невозможно, если внутренний класс не является статичным. Невозможно представить ссылку на родителя в документе YAML. – Andrey

+0

Сначала вы можете попробовать сериализовать XML, чтобы увидеть, видно ли это. Если возможно создать XML, можно создать YAML. – Andrey

0

Первое, что нужно проверить, что YAML поддерживает сериализацию класса Inner.