Kotlin数据类可选变量

data class Student( val id: Int?, val firstName: String?, val lastName: String?, val hobbyId: Int?, val address1: String?, val address2: String?, val created: String?, val updated: String?, ... ) 

我有上面的数据类,我想创建一个只有名字和姓氏的学生实例。 所以如果我运行这个,

 // creating a student Student( firstName = "Mark" lastName = "S" ) 

我将得到没有值传递参数'id'…错误。

为了避免这种情况,我修改了这个Student类,

 data class Student( val id: Int? = null, val firstName: String? = null, val lastName: String? = null, val hobbyId: Int? = null, val address1: String? = null, val address2: String? = null, val created: String? = null, val updated: String? = null, ... ) 

但它看起来很难看。

有没有更好的办法?

我不确定我给你的解决方案是否最好。 但绝对整洁。

唯一我不喜欢用空值作为默认参数,因为Kotlin提供了Null安全性,不能仅仅因为满足其他一些要求而将其删除。 只有当它们可以为null时,才将它们标记为null。 否则旧的Java方式是好的。 用一些默认值初始化它们。

 data class Student(val id: Int, val firstName: String, val lastName: String, val hobbyId: Int, val address1: String, val address2: String, val created: String, val updated: String) { constructor(firstName: String, lastName: String) : this(Int.MIN_VALUE, firstName, lastName, Int.MIN_VALUE, "", "", "", "") }