Десериализация вложенного класса с помощью yamlbeans

Я использую yamlbeans для десериализации файлов yaml в объекты Java. Это отлично работает, пока у меня есть только один класс. Проблема в том, что когда я хочу вложить поле, я вынужден указать вложенный класс в описании yaml.

Пример одного класса:

Java:

public class MessageField {
    public String name;
    public String type;
    public int length;
    public String comment;
}

yaml:

name: field1
type: int
length: 4
comment: first field
---
name: field2
type: string
length: 16
comment: second field
---

Несколько классов (требуется! Com.mylib.VariableField в файле yaml)

Java:

public class MessageField {
    public String name;
    public String type;
    public int length;
    public String comment;
    public List<VariableField> variableFields;
}
public class VariableField extends MessageField{
    public int id;
}

yaml:

name: field3
type: short
length: 2
comment:
variableFields:
  - !com.mylib.VariableField
    id: 1
    name: nestedField 1
    type: string
    length: -1
    comment:
---

Документация по yaml страница описывает, как десериализовать класс, указав тип при чтении класса, что я и делаю для моего класса верхнего уровня:

YamlReader reader = new YamlReader(new FileReader("sample.yml"));
MessageField mf = reader.read(MessageField.class);

Это правильно анализирует мои поля для класса верхнего уровня, но не позволяет мне избежать! com.mylib.VariableField - идентификатор моего вложенного класса. Я пытаюсь выяснить, есть ли способ изменить код Java, чтобы файлы yaml не знали имя класса.

6
задан Alex Pritchard 27 February 2012 в 20:29
поделиться