我在最近的项目中将Java文件转换为kotlin文件,问题是我在使用此代码时遇到错误:
val map = dataSnapshot.getValue<Map<*, *>>(Map<*, *>::class.java)
我在“ Map< *,*> :: class”下有一条红线,并且android studio说:
Only classes are allowed on the left hand side of a class literal
我应该用这个代码做什么?还有其他写方法吗?
这是一个相对的kotlin代码片段:
val messageText = messageArea!!.text.toString()
if (messageText != "") {
val map = HashMap<String, String>()
map.put("message", messageText)
map.put("user", UserDetails.username)
reference1!!.push().setValue(map)
reference2!!.push().setValue(map)
messageArea!!.setText("")
}
}
reference1!!.addChildEventListener(object : ChildEventListener {
override fun onChildAdded(dataSnapshot: DataSnapshot, s: String) {
val map = dataSnapshot.getValue<Map<*, *>>(Map<*, *>::class.java)
val message = map.get("message").toString()
val userName = map.get("user").toString()
原始的Java代码段:
String messageText = messageArea.getText().toString();
if(!messageText.equals("")){
Map<String, String> map = new HashMap<String, String>();
map.put("message", messageText);
map.put("user", UserDetails.username);
reference1.push().setValue(map);
reference2.push().setValue(map);
messageArea.setText("");
}
}
});
reference1.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Map map = dataSnapshot.getValue(Map.class);
String message = map.get("message").toString();
String userName = map.get("user").toString();
最佳答案
尝试投射.
val map = dataSnapshot.getValue(Map::class.java) as Map<String, String>
您可能要禁止显示“未经检查的演员表”的警告,但是可以.
Inm小程序商店
Inm小程序商店收录了最新,最热门的微信小程序和微信小游戏,是国内内容最丰富的集小程序游戏、小程序分发、小程序推广为一体的综合性小程序门户网站之一。
Vultr中文网
最低 $2.5/月 的VPS, 稳定, 可靠