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

Dan*_*ico 7 android kotlin firebase-realtime-database

我正在尝试从Kotlin在Firebase数据库中保存一个对象,我不觉得提供一个默认的空构造函数并将值设置为nullable,必须更改我的所有代码bc.

我的课:

class Video(var id: String, var url: String, var owner: User) :  {
    constructor() : this("", "", User("", "", ""))
}
Run Code Online (Sandbox Code Playgroud)

Firebase推送:

FirebaseDatabase.getInstance().reference.child("public").push().setValue(video)
Run Code Online (Sandbox Code Playgroud)

错误:

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

有更好的解决方案吗?

Ced*_*ust 24

使用默认参数:

class Video(var id: String = "", var url: String = "",
    var owner: User = User("", "", ""))
Run Code Online (Sandbox Code Playgroud)

(另外,考虑使用val).

  • `val`是不可变的.反序列化器将无法设置实际值,并且最终会有一堆具有相同(默认)值的对象. (4认同)

sho*_*ano 5

我还没有测试它是否适用于 Firebase,但根据kotlin 文档

注意:在 JVM 上,如果主构造函数的所有参数都有默认值,编译器将生成一个额外的无参数构造函数,它将使用默认值。这使得将 Kotlin 与通过无参数构造函数创建类实例的库(例如 Jackson 或 JPA)一起使用变得更加容易。

所以我想,通过为所有构造函数参数应用默认值将为您生成无参数构造函数。


归档时间:

查看次数:

3397 次

最近记录:

8 年 前