注: 私は秘密保持契約を結んでいるため、意味をなさない変数名を使用する必要があります。ごめん
こんにちは!私は抽象クラスを持っています:
public abstract class A {
public abstract List<String> someMethod();
}
そして、その抽象クラスを拡張する 2 つのクラス:
@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 {
...
}
次に、コードのどこかに、これら 2 つのクラスのリストを作成するクラスがあります。ほとんどの場合、次のようになります。
@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 で問題を解決できると聞きましたが、それでも同じエラーが発生します。不可解なのは、かなり正確なリストのサイズを取得できることですが、それを反復処理することはできません。どんな助けでも大歓迎です。申し訳ありませんが、私は説明が得意ではないので、Googleでこの種のものを見つけるのはちょっと面倒です.