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?,
...
)
Run Code Online (Sandbox Code Playgroud)
我喜欢上面的数据类,我想创建一个只有名字和姓氏的Student实例.所以,如果我运行这个,
// creating a student
Student(
firstName = "Mark"
lastName = "S"
)
Run Code Online (Sandbox Code Playgroud)
我将获得没有传递参数'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,
...
)
Run Code Online (Sandbox Code Playgroud)
但它看起来很难看.
有没有更好的方法?
New*_*bie 24
data class Student(val id: Int = Int.MIN_VALUE,
val firstName: String,
val lastName: String,
val hobbyId: Int = Int.MIN_VALUE,
val address1: String = "",
val address2: String = "",
val created: String = "",
val updated: String = "")
Run Code Online (Sandbox Code Playgroud)
然后,您可以在创建新学生实例时使用命名参数,如下所示.
Student(firstName = "Mark", lastName = "S")
Run Code Online (Sandbox Code Playgroud)
Har*_*edi 14
我不确定我给你的解决方案是否是最好的.但绝对整洁.
我唯一不喜欢使用null作为默认参数,因为Kotlin提供Null Safety,不要因为满足其他要求而删除它.仅当它们可以为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, "", "", "", "")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12101 次 |
| 最近记录: |