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, "", "", "", "") }