我有一个扩展LinkedHashMap的类(EntireFile)。我试着演绎:
EntireFile old = (EntireFile) functionReturningLinkedHashMap();它抛出异常,并显示消息:“无法将java.util.LinkedHashMap转换为com.gmail.maximsmol.YAML.GroupMap”。
public class EntireFile extends LinkedHashMap<String, GroupMap>
public class GroupMap extends LinkedHashMap<String, CategoryMap>
public class CategoryMap extends LinkedHashMap<String, LinkedHashMap<String, Integer>>请帮我解决这个错误!
发布于 2012-09-17 22:45:34
问题是返回的引用并不是对EntireFile实例的引用。如果functionReturningLinkedHashMap只返回一个LinkedHashMap,那么它就不能被转换为EntireFile,因为它不是一个can它如何获得关于它的任何额外信息呢?
(根据您的例外情况判断,您实际上谈论的是GroupMap而不是EntireFile,但同样的事情也适用。)
LinkedHashMap在这里没有什么特别之处--在Java中也是如此:
Object foo = new Object();
String bar = (String) foo; // Bang! Exception发布于 2012-09-17 22:55:45
您可以将数据复制到所需的映射类型,而不是强制转换。
EntireFile old = new EntireFile(functionReturningLinkedHashMap());或
EntireFile old = new EntireFile();
old.putAll(functionReturningLinkedHashMap());https://stackoverflow.com/questions/12461695
复制相似问题