9

単純な XML-REST ストリームを解析するために JAXB 2.2.2 を使用しています。これはコードの一部です:

JAXBContext jc = JAXBContext.newInstance( "com.example.entities" );
Unmarshaller u = jc.createUnmarshaller();
r = (Response )u.unmarshal( inputStream );

ObjectFactory クラス:

@XmlRegistry
public class ObjectFactory {

    public Response createRsp() {
        return new Response();
    }
}

応答クラス:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="rsp")
@XmlType
public class Response { ... }

「com.example.entities」には、ObjectFactory クラスまたは jaxb.in​​dex が含まれている必要があります。pojo の初期化を決定するために ObjectFactory クラスを使用したいのですが、これらのクラスは使用されません。 Response クラスは常に class.newInstance() によって直接インスタンス化されます。これには何か問題がありますか?

4

2 に答える 2

13

注釈を利用して@XmlType、オブジェクトの作成方法を制御できます。

@XmlType(factoryClass=ObjectFactory.class, factoryMethod="createRsp")
public class Response {
}

詳細については

于 2011-04-25T15:58:36.407 に答える
2

XJC コンパイラーによって生成された ObjectFactory クラスは、factoryClass および factoryMethod @XmlType アノテーションにとって有用ではありません。factoryMethod は引数なしの静的メソッドである必要があり、XJC はインスタンス メソッドを生成するためです。

于 2014-08-13T20:31:37.353 に答える