あなたがやりたいことは、恐ろしいハックのように聞こえます。
問題は、私が正しければ、アクションでパラメーターとして使用されるオブジェクトが不変であることです。幸いなことに、アノテーションを使用して JAXB マッピングをカスタマイズする方法はたくさんあります。クラスを不変に保ちながら、フィールドを JAXB から見えるようにすることが可能であるべきです。
この回答から、次のことがわかります。
package blog.immutable;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="customer")
@XmlAccessorType(XmlAccessType.NONE)
public final class Customer {
@XmlAttribute
private final String name;
@XmlElement
private final Address address;
@SuppressWarnings("unused")
private Customer() {
this(null, null);
}
public Customer(String name, Address address) {
this.name = name;
this.address = address;
}
public String getName() {
return name;
}
public Address getAddress() {
return address;
}
}
上記のコードが引数なしのコンストラクターを必要とするという事実が気に入らない場合は、このより複雑なアプローチCustomer()
を見ることができます。