子类中父类的java JAXB“重命名”属性
如果我有A类家长
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
class A {
private int id;
}
还有一个B班的孩子
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
class B extends A {
private int x;
private int y;
private int z;
}
在系统中还有许多C、D、X、Y、Z类,它们扩展了A类
我只想为B的实例将属性A#id
重命名为B#somethingId
我的想法是重新声明字段id并使用XmlTransient
,但它不起作用,在编组B时,我仍然有“id”:
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
class B extends a {
private int x;
private int y;
private int z;
public Long getSomethingId() {
return id;
}
@XmlElement
public void setSomethingId(Long id) {
super.setId(id);
}
public Long getId() {
return super.getId();
}
@XmlTransient
public void setId(Long id) {
super.setId(id);
}
}
输出是
<B>
<id>
<somethingId>
...
有什么想法吗
# 1 楼答案
试试这个:
及
注意@XmlAccessorType设置为XmlAccessType。财产
或者您也可以使用XmlAccessType来实现。字段,如下所示:
及
编辑以答复评论:
当然,您可以将id保留在所需的类中。例如,按照第二种方法,添加一个类,如:
这样就行了。如果我使用一个简单的main来演示它:
将给您以下结果:
还是你不喜欢这种方法