我有以下代码
// Gets title, headers and data
String type = (String) responseMap.get("type");
String language = (String) responseMap.get("language");
String template = (String) responseMap.get("template");
String title = (String) responseMap.get("title");
List<Map> header = (List<Map>) responseMap.get("headers");
Object[] rows = ((List<List>) responseMap.get("data")).toArray();
List list = new ArrayList();
Bean line = null;
LinkedHashMap<String, Object> hmap = null;
int j, i;
for (j = 0; j < rows.length; j++) {
hmap = (LinkedHashMap<String, Object>) rows[j];
line = new Bean();
for (i = 1; i < headers.length; i++) {
line.choosefield(i, headers, hmap);
}
list.add(line);
}在hmap = (LinkedHashMap)行中,eclipse表示
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.LinkedHashMap我不理解这个错误,因为我以前在另一个类中使用过这段代码(带有警告,但可以工作)。
public String generateReport(String[] headers, Object[] data,
String language, String template, String title, String type)
throws JRException, SQLException, IOException {
int j, i;
for (j = 0; j < data.length; j++) {
hmap = (LinkedHashMap<String, Object>) data[j];
line = new Bean();
for (i = 1; i < headers.length; i++) {
line.choosefield(i, headers, hmap);
}
list.add(line);
}为什么我现在不能选演员?使用Windows和JDK1.6
发布于 2015-07-23 22:37:16
在第二种情况下,hmap = (LinkedHashMap<String, Object>) data[j];是有效的,因为data[j]包含LinkedHashMap<String, Object>。为了验证您是否可以在第二个代码片段中将Object[]数据中的LinkedHashMap<String, Object>以外的内容放入。您可能会得到相同的java.lang.ClassCastException。
在第一个代码片段中,您可以在执行盲类型转换之前执行instanceOf检查。这将帮助您避免此java.lang.ClassCastException。
https://stackoverflow.com/questions/31590121
复制相似问题