我有 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 的成本。)。
关于java - 使用 JaxB 解码具有唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12074383/