注意:我在 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
我听说 lax=true 可以解决问题,但我仍然得到同样的错误。令人费解的是,我可以获得非常准确的列表大小,但我无法遍历它。任何帮助,将不胜感激。对不起,我不擅长解释,所以在谷歌上找到这种东西有点痛苦。