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报告站点上发布您的问题