Я использую 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 не требовалось знать имя класса.