Kotlin 层次结构:在父 var 中存储子 class

Kotlin hierarchy: Storing child class in parent var

有一个名为 Shading 的父 class,它是抽象的,有一个名为 GradientShading 的子 class,在 Java 中很容易存储将子对象转换为父类型的变量:

Shading act=null;
act=new GradienShading();

在 kotlin 中我不知道该怎么做,因为这会导致编译错误:

lateinit var act: Shading
act = GradienShading()

Type mismatch. Required: Shading Found: GradienShading

我如何在 Kotlin 中实现这一点?

可能是您没有正确设置类型层次结构。您确定 Shading 实际上是 GradientShading 的超类型吗? 以下代码在我的机器上编译得很好。

open class Shading
class GradientShading: Shading()

class Example {
    lateinit var act: Shading
    
    fun test() {
        act = GradientShading()
    }
}