我有xml返回了,
<UniequeTestList>
<UniequeTest>
<FirstName>a</FirstName>
<LastName>b</LastName>
</UniequeTest>
<UniequeTest>
<FirstName>a</FirstName>
<LastName>b</LastName>
</UniequeTest>
</UniequeTestList>
我在List<UniequeTest>
中使用JaxB解组它。
显然,该列表必须具有相同的多个对象。
我可以在拆开它的同时使它成为unieque吗?
我无法使用HashSet或LinkedHashSet同时使其成为unieque。我的意思是,如果该对象下的值相同,我在Unmarshall列表中想要的是unieque对象。
答案 0 :(得分:3)
最终可以使用JAXB Unmarshaller的监听器:
class JAXBUnmarshallingListener extends Unmarshaller.Listener {
@Override
public void beforeUnmarshal(Object target, Object parent) {
}
@Override
public void afterUnmarshal(Object target, Object parent) {
}
}
在回调方法中,您可以实现一个简单的缓存,并用您自己的唯一实例替换JAXB新创建的对象(之后新的JAXB实例将被垃圾收集,因为没有人继续引用它。请注意,此方法不会为您节省实例化的成本和这些对象的gc。