1 つの注釈付きプロパティを持つインターフェイスと、そのプロパティの実装に再注釈を付けない具体的な実装者で構成されるモデルがあります。これが正しくアンマーシャリングされないのはなぜですか (MOXy 2.5.0 を使用)? 正しく構築されたオブジェクトを取得しますが、プロパティが XML にバインドされることはありません。
<!-- XML -->
<InterfaceImpl id="5150" />
/**
* Annotated interface
*/
@XmlRootElement(name="IInterface")
public interface IInterface
{
@XmlAttribute(name="id")
public void setId(int id);
}
/**
* Concrete implementor
*/
@XmlRootElement(name="InterfaceImpl")
public class InterfaceImpl implements IInterface
{
private int m_id = -1;
@Override
public void setId(int id)
{
m_id = id;
}
}
/**
* Unmarshal code
*/
File f = new File("src\\resources\\Interface.xml");
JAXBContext context = JAXBContext.newInstance(MY_PATH);
Unmarshaller u = context.createUnmarshaller();
InterfaceImpl i = (InterfaceImpl)u.unmarshal(f);
IInterface を抽象クラスに変更すると、正しく動作します。抽象クラスとインターフェイスを同じ方法で処理するべきではありませんか? これは予想される動作ですか、それとも既知の問題ですか?
ありがとう!