是否有任何注释可以禁用更新一个属性?
我想更新xml文件中除一个属性之外的所有其他字段。我想让它只读字段。是不是可以通过jaxb?
答案 0 :(得分:2)
您可以声明如下属性:
@XmlAttribute(name = "identifier", required = true)
private String identifier;
public String getIdentifier() { return identifier; }
private void setIdentifier(String value) { this.identifier = value; }
和JAXB将解组并整理它。当然,调用setIdentifier的应用程序代码是不可能编写的。 (反思当然可以克服这个障碍。)
没有JAXB功能来实现这一目标。如果从XML模式生成Java代码,则必须编辑Java类并至少将setter的public更改为private。
答案 1 :(得分:0)
即使可以使用注释,我仍然建议使用setter函数。
- 将Java中的变量初始化为null,将其标记为未设置。
- 在公共setter函数中验证变量是否为null。
醇>
- 如果为null,则允许设置。
- 如果它不为null,则允许设置它,或忽略新值,或抛出异常。
决定是否要接受要设置的新字段值,或者是否要忽略新值,或者是否要通过异常取消整个解组,可以基于运行时决策,在其他更复杂的程序状态。因此,注释可能不太理想。
之后您可能会遇到其他组件调用setter的情况。
在我看来,在这种情况下,将决策逻辑放入设置器就应该是这样的。
答案 2 :(得分:0)
默认情况下,JAXB会将属性和公共字段视为已映射。一个属性需要公众获得&设定方法。如果这两种方法都不存在,那么它不会被视为映射属性。
您还可以注释一个字段,使其被视为已映射。我建议你注释该字段并仅提供访问数据的get方法。