使用在科特林:
在构造函数中的默认值仅服用时该构造的特定参数不传递到它在所有。那意味着它是为了实现各种组合的参数化构造函数。 例如,
data class Bird (val name: String = "peacock", val gender: String = "male")
如鸟(),波导( “鸽子”)或鸟(性别= “女性”)一起使用时取缺省值。
所以要解决你的问题,你必须添加?在类别参数旁边。 这样,
data class Project(val code: String,
val name: String,
val categories: List?)
并且不需要emptyList()默认值。 当你使用的emptyList在你的问题,你必须检查null并省略该参数是这样
val project = if(categories == null)
{
Project(code,name)
}
else
{
Project(code,name,categories)
}
,在另一个科特林类使用该数据类时。
在Java中使用:
但是如果你想为科特林使用下一些方法支持此默认参数为@Hotkey说,这是默认不支持,在任何Java类使用此数据类,然后引擎盖。
所以,使其与Java类兼容你必须添加@JvmOverloads注解,但是并不像@Hotkey说有注解这样
data class Project @JvmOverloads constructor(val code: String,
val name: String,
val categories: List? = emptyList())