java - 检查@XmlElement是否有name属性

标签 java reflection jaxb

我使用反射用 hashMap 中的数据填充 jaxb-object。 如果 @XmlElement 有 name 属性,我应该使用它,如果没有,我应该使用字段名称。

XmlElement anno = field.getAnnotation(XmlElement.class);
String name = anno.name();

我发现,如果 name 属性没有手动设置(例如使用简单的 @XmlElement 注释),name 字段值为“##default”。要检查属性是否已设置,我使用以下代码:

if(!"##default".equals(name)){

但我认为这是不能接受的。我怎样才能做得更好?

最佳答案

@XmlElement 注释的 name 属性的值 "##default"(默认值)表示 XML 元素名称应从字段派生。因此,您拥有的代码完全有效:

if(!"##default".equals(name)){

用户无法指定

@XmlElement(name="##default")

获取以下 XML:

<root>
    <##default>Hello World</##default>
</root>

Javadoc 引用

关于java - 检查@XmlElement是否有name属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17298794/

相关文章:

java - jpa 标准比较两个字符串而不考虑空格

java - 如何限制 Stream 顺序运行,并防止它并行运行?

java - 使用不同关键字将 JSON 映射到 Java 对象

.net - Microsoft 是否打算支持 .Net 中的反射?还是有义务这样做?

java - 为什么 Class.newInstance 总是抛出异常?

java - JAXB 解码包装列表

java - hibernate-spring 集成中一对多映射错误

c++ - 如何在 C++ 中执行类型扫描?

java - 我怎样才能动态生成xsd

java - JAXB - 如果为 false,则抑制 boolean 属性