我有一个扩展 LinkedHashMap 的类 (EntireFile)。我尝试转换:
EntireFile old = (EntireFile) functionReturningLinkedHashMap();
它抛出异常消息:“java.util.LinkedHashMap cannot be cast to 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>>
请帮我解决错误!
最佳答案
问题是返回的引用不是对EntireFile
实例的引用。如果 functionReturningLinkedHashMap
只是返回一个 LinkedHashMap
,它不能转换为 EntireFile
,因为它不是一 - 它如何获得关于它的任何额外信息?
(根据您的异常(exception)判断,您实际上是在谈论 GroupMap
而不是 EntireFile
,但同样适用。)
此处 LinkedHashMap
没有什么特别之处 - 在 Java 中总是也是如此:
Object foo = new Object();
String bar = (String) foo; // Bang! Exception
关于java 将 LinkedHashMap 转换为扩展 LinkedHashMap 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12461695/