【发布时间】:2020-10-06 23:24:35
【问题描述】:
我很困惑,我一直在寻找 kotlin 泛型是如何工作的,但我完全不明白。
基本上,我有BaseAnimalDetail 类,它与一些扩展Animal 类的类一起使用。目前BaseAnimalDetail类中有很多when,所以我的目标是避免所有那些when,只是扩展BaseAnimalDetail whenever I need, for each class that extends Animal`
open class BaseAnimalDetail<T : Animal?> : LinearLayout{
private var animal: T? = null
fun setAnimal(animal:T){
this.animal = animal
}
private fun play() {
when(animal){
is Horse -> playWithHorse...
is Dog -> playWithDog...
is Cat -> playWithCat...
}
animal?.let { it.play() } //this is not working but animal?.play works fine, WHY?
}
...More code
}
如您所见,when 超级丑陋,所以我想将BaseAnimalDetail 抽象化并按照我说的那样实现它。
上面的代码只是一个例子,但它可以帮助我理解泛型在 Kotlin 中是如何工作的。我必须在基类中有 T var
此外,为什么animal?.let { it.play() } 无法编译?
【问题讨论】:
-
你能发布你的动物课程吗?