【问题标题】:@XmlElementRefs & @XmlElementRef annotations in JavaJava 中的 @XmlElementRefs 和 @XmlElementRef 注释
【发布时间】:2010-01-27 08:26:06
【问题描述】:

请给我解释一下是怎么做的

@XmlElementRefs

@XmlElementRef

注解在 Java 中的含义及其用途..

编辑: @skaffman

好吧,假设我有一个这样的集合

@XmlElementRefs({
    @XmlElementRef(name="ElementA", type=ClassA),
    @XmlElementRef(name="ElementB", type=ClassB) }
)

List<Object> items;

现在如何访问此列表中的每个单独元素?下面的代码是否正确?

for (int j = 0; j < items.size(); ++j) {
    if (items.get(i).getClass().equals(ClassA)) {
        // perform ClassA specific processing:
    } else if (items.get(i).getClass().equals(ClassB)) {
        // perform ClassB specific processing:
    }
}

这是正确的方法吗?有没有更好的方法来执行每个类的特定处理?我的意思是有没有办法避免那些if else 构造?

【问题讨论】:

  • 你通常将它与多态一起使用。 ClassA 和 ClassB 都扩展了 ClassBase,因此您不需要 if/else 来正确调度处理。

标签: java xml jaxb


【解决方案1】:

这些用于注释可以包含各种不同类型的集合。此类列表的 java 绑定是:

@XmlElementRefs({
   @XmlElementRef(name="ElementA", type=ClassA),
   @XmlElementRef(name="ElementB", type=ClassB)
})
List<Object> items

这里,items 可以包含ClassAClassB 的任意组合,并且由于不能在List 的类型签名中表示,因此必须使用注释来表示。

【讨论】:

  • 好吧,假设我有一个这样的集合 @XmlElementRefs({ @XmlElementRef(name="ElementA", type=ClassA), @XmlElementRef(name="ElementB", type=ClassB) }) 列表 项目;现在如何访问此列表的每个单独元素?下面的代码是否正确? for (int j = 0; j
  • 我看不懂。请添加您的问题(并正确格式化。)
  • 但同样适用于@XmlElements 和@XmlElement,不是吗?
  • 如何将 ElementA 或 B 设置为某个值?
  • 好的,我发现了不同之处:使用@XmlElementRefs 注释的属性可以包含后代类。 vs w3.org/2001/XMLSchema-instance"/></es>
猜你喜欢
  • 1970-01-01
  • 2015-07-01
  • 1970-01-01
  • 2014-12-27
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
相关资源
最近更新 更多