java我想在jaxb的派生类中隐藏一个字段
我有家长课
Class A {
@XmlElement(required = true)
protected String name;
}
还有一个儿童班
Class B extends A {
@XmlTransient
public String getName() {
return name
}
这并不是在序列化对象B时隐藏属性名
你知道怎么做吗
谢谢
你可以在下面搜索框中键入要查询的问题!
我有家长课
Class A {
@XmlElement(required = true)
protected String name;
}
还有一个儿童班
Class B extends A {
@XmlTransient
public String getName() {
return name
}
这并不是在序列化对象B时隐藏属性名
你知道怎么做吗
谢谢
# 1 楼答案
JAXB不允许重写在子类的父元素中定义的绑定。
为了实现这个目标,我可以建议使用一个中间类,它应该包含a类中实际包含的所有内容,但是你应该用
XmlTransient
注释它,并且不要在它里面指定任何映射类
A
和类B
都应该扩展这个基类,但是现在每个类都可以定义如何定义它们的JAXB绑定下面是一个从代码开始的示例
基本类
如果合适,
A
类可以使用默认的jaxb行为。它将创建一个带有公共字段和公共getter/setter的映射(因此可以从父类继承)一门课
如果您想将属性指定为
required
,或者在元素映射中使用任何特殊性,那么应该在A类中使用显式绑定但是
B
类应该指定@XmlAccessorType(XmlAccessType.NONE)
,以便完全控制要从Base
类序列化/反序列化的字段B级