Jukka Siivonen
04/01/2022, 10:19 AMJukka Siivonen
04/01/2022, 10:19 AMdata class ReasonItem private constructor(
val reason: Reason,
val notes: String?
) {
constructor(
reason: FooReason
) : this(reason, null)
constructor(
reason: BarReason,
notes: String
) : this(reason, notes)
}
Jukka Siivonen
04/01/2022, 10:19 AMJukka Siivonen
04/01/2022, 10:21 AMJoffrey
04/01/2022, 10:23 AMreason as Reason
when you want to call the private constructor from the others.
That said, it might be more interesting to use a sealed class which does or does not have the notes
property depending on the typeJoffrey
04/01/2022, 10:24 AMsealed class ReasonItem(open val reason: Reason)
data class FooReasonItem(
override val reason: FooReason,
) : ReasonItem(reason)
data class BarReasonItem(
override val reason: BarReason,
val notes: String,
) : ReasonItem(reason)
Jukka Siivonen
04/01/2022, 10:25 AMJoffrey
04/01/2022, 10:26 AM