- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个父类,
Class A {
@XmlElement(required = true)
protected String name;
}
和一个子类,
Class B extends A {
@XmlTransient
public String getName() {
return name
}
这不是在序列化对象B时隐藏属性名。
知道如何让它发挥作用吗?
谢谢
最佳答案
JAXB 不允许覆盖子类中父元素中定义的绑定(bind)。
为了实现你的尝试,我建议使用一个中间类,它应该包含你的 A 类中实际包含的所有内容,但你应该用 XmlTransient
对其进行注释,并且不要在其中指定任何映射。 A
类和 B
类都应该扩展这个基类,但每个类现在都可以定义如何定义它们的 JAXB 绑定(bind)。
这是一个从您的代码开始的示例。
基类
@XmlTransient
public class Base {
protected String name;
public String getName( ) {
return name;
}
public void setName(String name) {
this.name = name;
}
}
如果合适,A
类可以使用默认的 jaxb 行为。它将创建一个具有公共(public)字段和公共(public) getter/setter 的映射(因此可从父类继承)。
By default, if @XmlAccessorType on a package is absent, then the following package level annotation is assumed.
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
A类
@XmlRootElement
public class A extends Base {
}
如果要将属性指定为必需
或在元素映射中使用任何特殊性,则应在 A 类中使用显式绑定(bind)。
但是 B
类应该指定 @XmlAccessorType(XmlAccessType.NONE)
以便完全控制要从 Base< 序列化/反序列化的字段
类。
B级
@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class B extends Base {
@XmlElement
private String boundedStringSpecificToB;
}
关于java - 我想在jaxb的派生类中隐藏一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41482919/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!