Adam S
08/20/2025, 5:15 AMval
, not a var
?
sealed interface ParentType
class SubTypeA : ParentType
class SubTypeB : ParentType
sealed interface DataHolder1 {
var data: ParentType
// ERROR: Type of 'data' doesn't match the type of the overridden 'var' property 'var data: ParentType' defined in 'DataHolder1'.
class HolderA(override var data: SubTypeA) : DataHolder1
// ERROR: Type of 'data' doesn't match the type of the overridden 'var' property 'var data: ParentType' defined in 'DataHolder1'.
class HolderB(override var data: SubTypeB) : DataHolder1
}
sealed interface DataHolder2 {
val data: ParentType
// but the type of `val` properties can be changed?
class HolderA(override val data: SubTypeA) : DataHolder2
class HolderB(override val data: SubTypeB) : DataHolder2
}
https://pl.kotl.in/esiw_FX5HAdam S
08/20/2025, 5:23 AMval dh: DataHolder1 = DataHolder1.HolderA(SubTypeA())
// assigning B to A should be forbidden!
dh.data = SubTypeB()