科特林.未经检查的演员:可以吗?到HashMap< String?,String?&gt ;? [英] Kotlin. Unchecked cast: Any? to HashMap<String?, String?>?

查看:94
本文介绍了科特林.未经检查的演员:可以吗?到HashMap< String?,String?&gt ;?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从firebaseDatabase获取HashMap<String?, String?>?:

override fun onDataChange(dataSnapshot: DataSnapshot) {
    val users: HashMap<String?, String?>? = dataSnapshot.value as HashMap<String?, String?>?  // todo !!!
    if (users != null) {
        if (!users.containsKey(userUid)) {
            users[userUid] = userName
        }
    }
}

此代码有效,但Android Studio在第二行显示警告:

This code works but Android Studio shows a warning on a 2nd line:

 Unchecked cast: Any? to HashMap<String?, String?>?

如何以正确的方式解决此问题?

How to fix this in a proper way?

推荐答案

使用GenericTypeIndicator的方法有效,谢谢@leoderprofi

The approach with GenericTypeIndicator works, thank you @leoderprofi

    val ti = object : GenericTypeIndicator<HashMap<String?, String?>?>() {}
    //...
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        val users: HashMap<String?, String?>? = dataSnapshot.getValue(ti)
        if (users != null) {
            if (!users.containsKey(userUid)) {
                users[userUid] = userName
            }
        }
    }

这篇关于科特林.未经检查的演员:可以吗?到HashMap&lt; String?,String?&gt ;?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆