【问题标题】:How to solve warning Unchecked cast android studio?如何解决警告 Unchecked cast android studio?
【发布时间】:2019-07-22 08:38:25
【问题描述】:

我有警告:

Unchecked cast: Serializable! to kotlin.collections.HashMap<String, String> /* = java.util.HashMap<String, String> */

在这个地方:

filterData = bundle.getSerializable("filter_data") as HashMap<String, String>

saw 这个问题和this 一个但我没能解决我的问题。我必须在片段中通过捆绑获取数据。也许有人遇到过类似的问题并且知道如何解决?

更新

我有这个全局变量:

 var filterData: HashMap<String, String> = HashMap()

由于 cmets 和答案,我如何收到它:

 when {
       bundle.containsKey("filter_data") -> {
       val serializable = bundle.getSerializable("filter_data")
       if(serializable is java.util.HashMap<*, *>){
         filterData = bundle.getSerializable("filter_data") as HashMap<String, String>
         Singleton.filter_data = filterData
         getJobList(offset, type, sp.getString("access_token", ""), bundle.getSerializable("filter_data") as HashMap<String, String>, false)
         }

      }
....
}

我有这个as HashMap&lt;String, String&gt; 部分黄色和警告:

Unchecked cast: Serializable! to kotlin.collections.HashMap<String, String> /* = java.util.HashMap<String, String> */

【问题讨论】:

  • 警告说bundle.getSerializable("filter_data") 可以是任何Serializable。这就是你有责任强制转换它的原因,因为无法在编译时进行检查。要删除警告,你可以像var serializable = bundle.getSerializable("filter_data"); if(serializable is HashMap&lt;String, String&gt;) {filterData = serializable as HashMap&lt;String, String&gt; }
  • AS 建议我在 if 条件为 if(serializable is HashMap&lt;*, *&gt;) 时检查可序列化,我决定问你在这种情况下我必须做什么?
  • 好的,但我不确定您在评论中的意思。我的评论有帮助吗,还是您仍有问题?
  • 我还是有问题:(
  • 好的,你还有什么问题?

标签: android kotlin


【解决方案1】:

您可以使用 safe cast 从您的捆绑包中获取可选值,例如

filterData = bundle.getSerializable("filter_data") as? HashMap<String, String>

所以您的filterData 将是HashMap&lt;String, String&gt;? 类型。如果演员阵容失败,filterData 将为空,您将不得不处理这种情况。

【讨论】:

  • 它没有帮助我,我用我的变量做了你所说的一切
【解决方案2】:

尝试应用@Vladyslav Matviienko 解决方案,如下所示。

var filterData = bundle.getSerializable("filter_data") as HashMap<*, *>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2019-07-12
    • 2013-04-29
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多