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

I will get No value passed for parameter 'id' ... errors.

To avoid that, I modified the Student class like this,

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,
    ...
)

But it looks so ugly.

Is there any better way?

推荐答案

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

The only thing I don't like to go with nulls as default param, because Kotlin offers Null Safety, lets not remove it just because to fulfil some other requirement. Mark them null only if they can be null. Else old Java way is good. Initialize them with some default value.

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

Kotlin相关问答推荐

如何在 Big Data 中使用Inc过滤器?

计算值的Elvis算子

Kotlin stlib中是否有用于将列表<;对<;A,B&>;转换为对<;列表<;A&>,列表<;B&>;的函数

Kotlin Poet 的导入不明确

如何访问嵌套在另一个 map 中的 map 中的值(在 kotlin 中)

如何在 Spring Boot 3 中为内部类提供运行时提示

Kotlin 数据类中的大量参数

JetPack Compose:添加点击持续时间

Kotlin 列表扩展功能

异常传播如何在 CoroutineScope.async 上工作?

如何使用 Kotlin KClass 属性 simpleName 生成空值

比较 Kotlin 中的可比对象列表

Kotlin 的 isNullOrBlank() 函数是否可以导入 xml 以用于数据绑定

将 Android Studio 升级到 3.1.0 后的 Android Support 插件错误

有没有办法在数据类构建时转换属性的值?

如何将map函数应用于Kotlin中的数组并更改其值?

判断EditText是否为空kotlin android

lateinit 的 isInitialized 属性在伴随对象中不起作用

Kotlin Realm:如果类包含自定义构造函数,则必须声明一个不带参数的公共构造函数

如何在 Intellij Idea 中运行 Kotlin 函数