Возможно ли, используя аннотации BeanIO, определить поле как коллекцию абстрактного класса или коллекцию классов, реализующих интерфейс?
Я хочу следующее:
@Record(minOccurs = 1, maxOccurs = -1, collection = List.class)
List<SomeInterface> records;
Затем я добавляю в коллекцию список различных конкретных классов, которые содержат все аннотации для определения действительной записи.
Однако я просто получаю сообщение об ошибке:
Repeating segments without any child field component must have minOccurs=maxOccurs
... какой вид поражает цель.
Некоторые вещи, которые я пробовал:
- Установка потока только на запись
- Использование абстрактного класса вместо interface
EDIT: Это моя конфигурация:
StreamFactory factory = StreamFactory.newInstance();
StreamBuilder builder = new StreamBuilder("MyStreamName")
.writeOnly()
.format("delimited")
.parser(new DelimitedParserBuilder(','))
.addGroup(Parent.class);
factory.define(builder);
... тогда как Parent.class содержит список записей;
Логически, должно быть что-то, связывающее SomeInterface с конкретными реализациями интерфейса, чтобы BeanIO мог понять, что делать, но я не могу понять, как установить это соединение.