我有返回的xml,
<UniequeTestList>
<UniequeTest>
<FirstName>a</FirstName>
<LastName>b</LastName>
</UniequeTest>
<UniequeTest>
<FirstName>a</FirstName>
<LastName>b</LastName>
</UniequeTest>
</UniequeTestList>
我在
List<UniequeTest>
中使用JaxB将其解组。显然,该列表必须具有多个相同的对象。
我可以在取消编组的同时使其成为唯一的吗?
我不能同时使用HashSet或LinkedHashSet使它变得不唯一。我的意思是,如果该对象下的值相同,则我在Unmarshall列表中想要的是不唯一对象。
最佳答案
您最终可以使用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。)。