2017-04-10 12 views
0

marshalingunMarshalingのオブジェクトを調べていたのはJAXBです。一方、JAXBContextのインスタンスを取得する2つのオプションがあることに気付きました。jaxb.in​​dexファイルを使用する場合

  • 1は、クラスに基づいています:JAXBContext context = JAXBContext.newInstance(ex.getClass());
  • 他の1は、パッケージ名に基づいています。JAXBContext context = JAXBContext.newInstance(ex.getClass().getPackage().getName());

第二の方法については、Beanクラス名のリストを含むjaxb.indexファイルを、提供しなければなりません。

多分、誰かが説明することができます、JAXBContextインスタンスを取得するこの2つの方法の違いは何ですか?いつ使うのがいいですか?

+0

[JAXBContext.newInstance variations](0000000000)の可能な複製。 – ulab

答えて

1

2番目の方法では、jaxb.indexファイルを提供する必要があります。このファイルには、Beanクラス名のリストが含まれています。

これは正しくありません。 JAXB2では、これはjaxb.indexなしでも動作し、クラスはObjectFactory@XmlSeeAlsoで "認識"されます。

通常、関連するすべてのクラスを考慮して明示的に列挙したくないので、通常はJAXBContext context = JAXBContext.newInstance("my.package:my.another.package);を使用します。

+0

でも、 'jaxb.in​​dex'の目的は何ですか? – Bublik

+0

@Bublik 'ObjectFactory'の代わりに作成することができます。これは、JAXBクラスを手作業で書く場合(スキーマから生成する場合と比較して)にはもっと便利です。 – lexicore

関連する問題