请注意:我处于NDA之下,因此我必须使用不合理的变量名称。对不起如何遍历不同对象的列表?
您好! 我有一个抽象类:
public abstract class A {
public abstract List<String> someMethod();
}
和两个类扩展该抽象类:
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@XmlRootElement(name = "BField")
@XmlAccessorType(XmlAccessType.FIELD)
public class B extends A {
...
}
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@XmlRootElement(name = "CField")
@XmlAccessorType(XmlAccessType.FIELD)
public class C extends A {
...
}
然后在某个地方的代码中还有一类,使这两个类的列表。几乎是这个样子的:
@XmlElementWrapper(name = "MyStuffData")
@XmlAnyElement(lax = true)
@XmlElementRefs({
@XmlElementRef(name = "B", type = B.class),
@XmlElementRef(name = "C", type = C.class),
})
private List<A> myStuff;
的myStuff
内容可以是B或C吧?我如何遍历该列表?我从肥皂请求中获取数据,所以我只是很困惑如何做到这一点。我想:
for(A a: myStuff){
...some code here...
}
但是我得到这个异常:
Caused by: java.lang.ClassCastException: org.apache.xerces.dom.ElementNSImpl cannot be cast to some.package.here.A
听说不严=真能解决问题,但我仍然得到同样的错误。令人费解的是,我可以获得相当准确的列表大小,但之后我无法遍历它。任何帮助,将不胜感激。 对不起,我不擅长解释,所以在谷歌找到这种东西是有点痛苦。
什么不解的是,我能得到这是非常准确的列表的大小,但后来我不能遍历它。这意味着该列表形成为列表 ..ಠ_ಠ或者也许这就是包装工具的工作原理(我之前没有jaxb的经验,因为时区差异atm我无法联系到设置此人的人,他睡着了,我赌注)。无论如何,谢谢。肯定会尝试。 – joannaSmith12
@ joannaSmith12我明白,现场离岸队:( – anshulkatta