我试图在将Serializable类型转换为之前检查类型HashMap<String, String>。但是它给出以下警告;
无法检查已删除类型的实例:kotlin.collections.HashMap / * = java.util.HashMap * /
有没有一种方法可以检查Serializable类型是否HashMap<String, String>安全?
params = if (it.getSerializable(ARG_PARAMS) is HashMap<String, String>) {
it.getSerializable(ARG_PARAMS) as HashMap<String, String>
} else null
Run Code Online (Sandbox Code Playgroud)
实际上,您无法检查对象是否具有类型,HashMap<String, String>因为在运行时会擦除类型参数。我建议您使用安全的转换:
params = arguments?.getSerializable(ARG_PARAMS) as? HashMap<String, String>
Run Code Online (Sandbox Code Playgroud)
重要:
可能不清楚,但是我的代码没有检查这个参数是否确实是type
HashMap<String, String>。您可以通过HashMap<String, Int>,在某些情况下,您会得到一个错误。在我的代码片段中,您只是对编译器说:“我知道会的HashMap<String, String>。把它交给我”。params仅当没有参数或其类型不同于时才为nullHashMap。
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |