我试图在Kotlin中保存Firebase数据库中的对象,
我不认为提供默认的空构造函数并将值设置为nullable
,不得不更改我的所有代码bc。
我的课程:
class Video(var id: String, var url: String, var owner: User) : {
constructor() : this("", "", User("", "", ""))
}
Firebase推送:
FirebaseDatabase.getInstance().reference.child("public").push().setValue(video)
错误:
缺少一个没有参数的构造函数
有更好的解决方案吗?
答案 0 :(得分:21)
使用默认参数:
class Video(var id: String = "", var url: String = "",
var owner: User = User("", "", ""))
(另外,请考虑使用val
)。
答案 1 :(得分:4)
我没有测试它是否适用于Firebase,但根据kotlin documentation,
注意:在JVM上,如果主构造函数的所有参数都具有默认值,编译器将生成一个额外的无参数构造函数,该构造函数将使用默认值。这使得Kotlin可以更容易地使用像Jackson或JPA这样的库,通过无参数构造函数创建类实例。
所以我想,通过为所有构造函数参数应用默认值,将为您生成无参数构造函数。
答案 2 :(得分:0)
您需要向Video类添加一个空构造函数。这需要能够使用Firebase的类。