Kotlin 为什么受保护的var是KProperty,而公共/私有var是KMutableProperty?

Kotlin 为什么受保护的var是KProperty,而公共/私有var是KMutableProperty?,kotlin,Kotlin,在以下每种情况下,我都有一些可变的var属性。根据Javadocs,可变属性由KMutableProperty表示,但在这些示例中,protected属性由KProperty类表示。为什么会这样 class FooA { var publicProp: String? = null protected var protectedProp: String? = null private var privateProp: String? = null fun foo

在以下每种情况下,我都有一些可变的
var
属性。根据Javadocs,可变属性由
KMutableProperty
表示,但在这些示例中,
protected
属性由
KProperty
类表示。为什么会这样

class FooA {
    var publicProp: String? = null
    protected var protectedProp: String? = null
    private var privateProp: String? = null

    fun foo() {
        val a = ::publicProp
        val b = ::protectedProp
        val c = ::privateProp
    }
}

open class FooB {
    var publicProp: String? = null
    protected var protectedProp: String? = null
    private var privateProp: String? = null

    fun foo() {
        val a = ::publicProp
        val b = ::protectedProp
        val c = ::privateProp
    }
}

class Bar : FooB() {
    fun bar() {
        val a = ::publicProp
        val b = ::protectedProp
    }
}

这很有趣,我认为IntelliJ可能有问题,但
:protectedProp as KMutableProperty0
会抛出
ClassCastException
最好直接在他们的bug报告站点上发布您的问题