Kotlin Firebase反序列化

我试图从Kylin反序列化Firebase到POJO的数据,这是我的POJO类:

class Message { var number: String ?= null var message: String? = null var timestamp: Long = 0L var isHandled: Boolean ?= false var type:String ?=null } 

这是我从Firebase检索数据的代码

 val query = Fire.REF.child("sms").orderByChild("type").equalTo("outbox-unsent") query.addChildEventListener(object : ChildEventListener { override fun onChildAdded(dataSnapshot: DataSnapshot, key: String) { val outbox = dataSnapshot.getValue(Message::class.java) Log.d("BS", "Background Service $outbox") } //...... }); 

这是我在Firebase上的数据结构

 "sms":{ "-KI3ar91oBXGNpXXrOCS" : { "handled" : false, "message" : "Pak kenapa koneksi...", "number" : "+6285830166314", "timestamp" : 1463587399000, "type" : "inbox" }, //.......// } 

当我执行代码时会产生一个错误:

 java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter key 

上面的代码在哪里出错?

正如Augusto上面所说的,Kotlin是无效的,但是在上面的函数中, 关键的参数可能是空的。 所以代码应该这样

 onChildAdded(dataSnapshot: DataSnapshot, key: String?) 

在关键参数之后添加问号