1

xml が次のように返されました。

<UniequeTestList>
 <UniequeTest>
  <FirstName>a</FirstName>
  <LastName>b</LastName>
 </UniequeTest>
 <UniequeTest>
  <FirstName>a</FirstName>
  <LastName>b</LastName>
 </UniequeTest>
</UniequeTestList>

で JaxB を使用して非整列化しList<UniequeTest>ます。そして明らかに、そのリストには同じ複数のオブジェクトが必要です。非整列化と同時に一意にすることはできますか?

HashSet または LinkedHashSet を使用して同時に一意にすることはできません。Unmarshall リストに必要なのは、そのオブジェクトの下の値が同じである場合、一意のオブジェクトであることを意味します。

4

1 に答える 1

3

最終的には、JAXBUnmarshallerのリスナーを使用できます。

 class JAXBUnmarshallingListener extends Unmarshaller.Listener {

   @Override
   public void beforeUnmarshal(Object target, Object parent) {
   }

   @Override
   public void afterUnmarshal(Object target, Object parent) {
   }
 }

コールバックメソッドでは、単純なキャッシュを実装し、JAXBによって新しく作成されたオブジェクトを独自のインスタンスに置き換えることができます(新しいJAXBインスタンスは、誰も参照し続けないため、後でガベージコレクションされます。このメソッドでは保存されません。これらのオブジェクトのインスタンス化とgcのコスト。)

于 2012-08-22T13:48:56.487 に答える