我有一个扩展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>>
请帮我解决错误!
答案 0 :(得分:5)
问题是返回的引用只是不是对EntireFile
实例的引用。如果functionReturningLinkedHashMap
只返回LinkedHashMap
,则无法将其转换为EntireFile
,因为不是一个 - 它将如何获得任何额外信息关于它?
(根据您的例外判断,您实际上是在讨论GroupMap
而非EntireFile
,但同样适用。{/ p>
这里LinkedHashMap
没有什么特别之处 - 在Java中总是为真:
Object foo = new Object();
String bar = (String) foo; // Bang! Exception
答案 1 :(得分:0)
您可以将数据复制到所需的地图类型,而不是投射。
EntireFile old = new EntireFile(functionReturningLinkedHashMap());
或
EntireFile old = new EntireFile();
old.putAll(functionReturningLinkedHashMap());