科特林.未经检查的演员:可以吗?到HashMap< String?,String?> ;? [英] Kotlin. Unchecked cast: Any? to HashMap<String?, String?>?
本文介绍了科特林.未经检查的演员:可以吗?到HashMap< String?,String?> ;?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想从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< String?,String?> ;?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文