java 将 LinkedHashMap 转换为扩展 LinkedHashMap 的类

标签 java casting hashmap linkedhashmap

我有一个扩展 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/

相关文章:

ios - 在 Swift 中,为什么会有 `as` 运算符。它有什么好处?他们为什么放进去?

android - 将 HashMap 传递给 AsyncTask 并将其转换为 JSONObject

java - 在 java 的 HashMap 中使用 char[] 数组

java - 将数组转换为多维数组 - Java

java - 将 <LatLng,String> 的数组列表从主 Activity 传递到另一个类

java - 从 Android 应用程序发送电子邮件时出现 NetworkOnMainThreadException

c++ - 什么时候需要显式指针类型转换?

casting - Kotlin合成整数不能转换为 float 按钮

map - 从两个或更多序列创建映射序列

Eclipse 无法识别 JavaFX 类