kotlin对象的空构造函数使用Firebase

时间:2016-07-10 01:30:28

标签: android firebase-realtime-database kotlin

我试图在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)

错误:

  

缺少一个没有参数的构造函数

有更好的解决方案吗?

3 个答案:

答案 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的类。