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

但它看起来很难看。

有没有更好的办法?

One Solution collect form web for “Kotlin数据类可选变量”

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

唯一我不喜欢用空值作为默认参数,因为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, "", "", "", "") } 
  • Kotlin okhttp3更改json方法为“Post”
  • Kotlin - 从数组中删除重复的字符串的习惯方法?
  • Kotlin - List列表中的列表过滤
  • BadCredentialsException:GAE上的Spring引导安全性Oauth2无法获取访问令牌
  • Kotlin - RecyclerView.ViewHolder子类 - 无法访问额外的属性
  • Kotlin - 具有不同参数的辅助构造函数
  • 绑定类引用返回一个协变类型的目的是什么?
  • Kotlin:像在Java中一样创建一个常规数组
  • Kotlin:Gradle增量编译
  • KotlinJS中的Kootlin失败的世界没有定义
  • Kotlin lambda以Interface作为参数
  • Kotlin language will be the best programming language for Android.