我的代碼在運行時失敗,出現ClassCastException
。我試圖調試,但徒勞無功。我已經聲明瞭一個帶有字段的類主題,並且正試圖將該類的對象加載到列表中。以下是代碼。它失敗了:List items = (List)(it.next())
。爲泛型添加?
並沒有幫助。我猜這個對象是被施放的,儘管在List
聲明中沒有提到泛型。有沒有我在這裏失蹤的基本概念?嘗試遍歷列表時拋出Java ClassCastException
在下面的方法中,我試圖將數據編碼到一個xml文件中。
private void encodeSection(PrintStream output, Indenter indenter,
String name, List list) {
String indent = indenter.makeString();
output.println(indent + "<" + name + "s>");
indenter.in();
String indentNext = indenter.makeString();
if (list == null) {
// the match is any
output.println(indentNext + "<Any" + name + "/>");
} else {
String nextIndent = indenter.makeString();
Iterator it = list.iterator();
indenter.in();
while (it.hasNext()) {
List items = (List)(it.next());//-------------> Error occurs
output.println(indentNext + "<" + name + ">");
Iterator matchIterator = items.iterator();
while (matchIterator.hasNext()) {
TargetMatch tm = (TargetMatch)(matchIterator.next());
tm.encode(output, indenter);
}
output.println(indentNext + "</" + name + ">");
}
indenter.out();
}
indenter.out();
output.println(indent + "</" + name + "s>");
}
}
堆棧跟蹤:
Exception in thread "main" java.lang.ClassCastException: SubjectID_V cannot be cast to java.util.List
at Target_V.encodeSection(Target_V.java:71)
at Target_V.encode(Target_V.java:41)
at com.sun.xacml.AbstractPolicy.encodeCommonElements(Unknown Source)
at com.sun.xacml.PolicySet.encode(Unknown Source)
at PolicyFactory_V.main(PolicyFactory_V.java:56)
您尚未發佈整個代碼。此外,你的錯誤很可能是因爲你試圖將一種類型的集合投射到其他類型,這可能是不允許的。什麼是你的'SubjectID_V'的類型? – ha9u63ar 2014-11-06 10:52:53
您在這裏使用了很多「原始類型」。請查看泛型類型,以及如何在'List'和'Iterator'中使用它們。 – Tom 2014-11-06 10:54:30