在Kotlin中,我如何拥有可用于实体的数据类

时间:2019-02-13 22:01:40

标签: kotlin

我有一个Kotlin数据类:

data class Somebody(var id: String, var created: Date, var address1: String, var address2: String,
                         var city: String, var county: String, var hitCount: Integer, var lat: Double,
                         var lon: Double, var lookupSuccessful: Boolean, var name: String,
                         var neghiborhood: String, var partialMatch: Boolean, var searchedAddress: String,
                         var state: String, var zip4: String, var zip5: String, var active: Boolean,
                         var instructions: String, var  maxValue: Integer) {

}

问题是,此类需要一个0参数构造函数,因此我可以让iBatis或JPA或Jackson或其他人创建一个。我该怎么办却仍然没有可为空的字段?

我可以在数据类中使用不可为空的字段,并且仍然具有默认的无参数构造函数吗?

1 个答案:

答案 0 :(得分:2)

使用无参数compiler plug-in会为您创建一个空的构造函数。

如果使用Gradle,请将其添加到build.gradle文件中:

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"
    }
}

apply plugin: "kotlin-noarg"

如果您不想使用它,也可以这样做:您可以定义一个辅助构造函数,该构造函数使用默认值初始化属性。

data class Somebody(
        var id: String,
        var created: Date
        // ...
) {
    constructor() : this(
            id = "", created = Date(), address1 = "" // ...
    )
}

我不建议这样做,因为如果这样做可能会迫使您定义任意默认值。