MrNiamh
07/30/2021, 8:46 AMclass A (
override val values: List<A>
) : B
interface B {
val values: List<B>
}
This does not:
class A (
override var values: List<A>
) : B
interface B {
var values: List<B>
}
lhwdev
07/30/2021, 8:53 AMclass C : B { ... }
val a: A = A(...)
val b: B = a
b.values = listOf<B>(C())
This becomes available, then when getting from `a.values`(which is just alias to b.values
with different type), values is expected to be instance of List<A>; in fact it isn't.
a.values[0] // not the instance of A
MrNiamh
07/30/2021, 9:14 AMJilles Soeters
07/30/2021, 4:07 PMrnett
07/31/2021, 12:03 AM