1

jaxb2 を使用して、一部の外部データの xml スキーマ定義から Java コードを生成しています。このプロジェクトはかなり古く、maven-jaxb-plugin 1.1.1 を使用していました。jaxb2 も使用する jaxb2-maven-plugin に更新したいのですが、生成されたコードにいくつかの違いが見つかりました。具体的には、次の形式の属性があります。

    <xsd:attribute name="num" type="xsd:int" use="optional">

Integer生成されたコードのフィールドにマップされます。

@XmlAttribute(name = "num")
protected Integer num;

ただし、jaxb2 は、null 許容型ではなくプリミティブ型でゲッターとセッターを生成します。

public int getNum() {
    return num;
}

public void setNum(int value) {
    this.num = value;
}

public boolean isSetNum() {
    return (this.num!= null);
}

public void unsetNum() {
    this.num = null;
}

ただし、現在のコードではgetNum、 が null 許容のボックス化された型を返すことを前提としており、null ポインター例外で失敗する単体テストでこれをテストしています。

オプションの属性に null 許容型のゲッター/セッターを生成する方法はありますか? xsd ファイルは外部ベンダーから提供されているため、変更したくありません。optionalPropertyには設定しない<globalBindings>ので、値はデフォルトですwrapper

4

1 に答える 1