java-Android Studio Kotlin错误与dataSnapshot.getValue

我在最近的项目中将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>

您可能要禁止显示“未经检查的演员表”的警告,但是可以.

转载注明原文:java-Android Studio Kotlin错误与dataSnapshot.getValue - 代码日志