我将对象类型转换为bean类,这反过来会给我一个异常ClassCastException,我不明白这背后的问题。
Hashtable listEvent = getEvents(label1.getText(), str);
Enumeration events = listEvent.keys();
while (events.hasMoreElements()) {
String key = (String) events.nextElement();
if (key.equals(label1.getText())) {
Vector object = (Vector) listEvent.get(key);
Enumeration hashtable = listEvent.keys();
while (hashtable.hasMoreElements()) {
String keys = (String) hashtable.nextElement();
if (keys.equals(label1.getText())) {
Vector data = (Vector) listEvent.get(keys);
for (int i = 0; i < data.size(); i++) {
EventsBean bean1 = (EventsBean) data.elementAt(i);在运行应用程序将类型转换为EventsBean时,我得到一个错误。
发布于 2012-03-16 02:11:40
首先,如果使用泛型集合而不是原始类型(Map<String, List<EventsBean>>而不是Hashtable),编译器将捕获这些错误。
忘记Vector、Hashtable和Enumeration。从Java 1.2开始,就不应该再使用它们了。
最后,为什么要对哈希表的键进行迭代,而不是查找值directy?
而不是
Enumeration events = listEvent.keys();
while (events.hasMoreElements()) {
String key = (String) events.nextElement();
if (key.equals(label1.getText())) {
Vector object = (Vector) listEvent.get(key);只需使用
Vector object = (Vector) listEvent.get(label1.getText());现在来回答您的问题:如果您得到一个ClassCastException,这意味着存储在集合中的对象并不是您认为的那样。检查填充集合的代码。(并切换到通用的、现代的集合)
https://stackoverflow.com/questions/9725541
复制相似问题