我正在将该对象类型转换为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的应用程序时出现错误。
最佳答案
首先,如果使用通用集合而不是原始类型(Map<String, List<EventsBean>>
而不是Hashtable
),则编译器将捕获这些错误。
忘记向量,哈希表和枚举。从Java 1.2开始,不应再使用它们。
最后,为什么要迭代哈希表键,而不是直接查找值?
代替
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,则意味着存储在集合中的对象不是您认为的那样。检查填充集合的代码。 (并转换为通用的现代收藏)
关于java - 获取ClassCastException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9725541/