open class Animal
class Cat() : Animal() {
fun myaw() {
System.out.println("myaw!");
}
}
class Dog() : Animal() {
fun gav() {
System.out.println("dog!");
}
}
// Usage:
// val list = mutableListOf<Int>()
// list.addAnything("string")
// val fail = list[0]
private fun <E> List <E>.addAnything(element: E) {
if (this is MutableList<E>) {
this.add(element)
}
}
fun main() {
val cats = mutableListOf<Cat>(Cat(), Cat())
val upcast: List<Cat> = cats
val covariance: List<Animal> = upcast
val animals: MutableList<Animal> = covariance as MutableList
animals[0] = Dog()
for (cat in cats) {
cat.myaw()
}
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎