BeanIO-抽象类或类实现接口的集合



是否可以使用BeanIO注释将字段定义为抽象类的集合,或实现接口的类的集合?

我想要的是:

@Record(minOccurs = 1, maxOccurs = -1, collection = List.class)
List<SomeInterface> records;

然后,我向集合提供了一个不同具体类的列表,其中包含用于定义有效记录的所有注释。

然而,我只是得到一个错误说

Repeating segments without any child field component must have minOccurs=maxOccurs

这有点违背目的。

我尝试过的一些东西:

  • 将流设置为writeOnly
  • 使用抽象类而不是接口

编辑:这是我的配置:

StreamFactory factory = StreamFactory.newInstance();
StreamBuilder builder = new StreamBuilder("MyStreamName")
.writeOnly()
.format("delimited")
.parser(new DelimitedParserBuilder(','))
.addGroup(Parent.class);
factory.define(builder);

而Parent.class包含List<SomeInterface>记录;

从逻辑上讲,应该有一些东西将SomeInterface与接口的具体实现联系起来,这样BeanIO就可以知道该做什么,但我似乎不知道如何建立这种连接。

以下对我有效:

import org.beanio.annotation.Record;
@Record(name = "parentRecord", maxOccurs = 1, minOccurs = 1, collection = List.class)
public class Parent {
@Record(minOccurs = 1, collection = List.class, name = "recordList")
private List<A> records;
// getter + setter
}

Parent类现在是@Record,需要将StreamBuilder更改为

final StreamFactory factory = StreamFactory.newInstance();
final StreamBuilder builder = new StreamBuilder("MyStreamName")
.writeOnly()
.format("delimited")
.parser(new DelimitedParserBuilder(','))
.addRecord(Parent.class);
factory.define(builder);

这对我来说没有任何例外

相关内容

  • 没有找到相关文章

最新更新