所以我使用的是beanio,我必须编写一个类型处理程序,如果通用列表为空,则将其分配给null列表。例如,我正在从XML文件中导入地址。
如果有有关地址的完整信息,则XML看起来像这样:
<Address>
<Street1>aaaaaa</Street1>
<PostCode>00-000</PostCode>
<City>bbbbb</City>
<CountryCode>AA</CountryCode>
<PhoneNo>+00 00 00000000</PhoneNo>
<Email>aaa@aaa.aaa</Email>
</Address>
如果XML文件中没有地址的信息,则看起来像这样:
<Address />
Java类中的映射看起来像这样 - 带有beanio @seagment注释:
@Segment(xmlName = "Address", minOccurs = 0, maxOccurs = -1)
private List<Address> address;
基本上,测试类希望,如果上述列表为空,则类型处理程序应为其分配为NULL。没有列表的任何类型处理程序,分配了空括号:
address=[]
这是我的问题,在这种情况下,有人知道处理程序应该如何寻找收藏类型吗?以前,我为字符串,ints等写了一些处理程序 - 带有@field注释的东西,一切正常。现在,我正在努力用 @段注释写作内容。有提示吗?从哪个类来继承?
自版2.1以来,您可以在集合上使用lazy="true"
。从迁移到2.1文档
在2.1之前,重复指定懒惰=" true"的段作为空集合。展望未来,如果指定的懒惰和所有项目为空字符串,则将不再创建一个集合。
而不是尝试编写TypeHandler
,我首先尝试以下尝试:
@Segment(xmlName = "Address", minOccurs = 0, maxOccurs = -1, lazy="true")
private List<Address> address;
我认为您所说的"空括号"只是实现toString()
方法以证明列表为空的方式。