私のクラスのプロパティの値を出力したいと思います。私はクラス名にthis
を変更するとSomeClass :: classはKClass <SomeClass>ですが、このクラスはKClassです。<out SomeClass>
Error:(34, 40) Kotlin: Out-projected type 'KProperty1<out SomeClass, Any?>' prohibits the use of 'public abstract fun get(receiver: T): R defined in kotlin.reflect.KProperty1'
SomeClass
すべてがうまくある
fun print() {
val cl = SomeClass::class
cl.declaredMemberProperties.filter {it.visibility != KVisibility.PRIVATE}.forEach {
println("${it.name} = ${it.get(this)}")
}
}
だから問題はそのコンパイラです:私はこのコードを構築しようとした際
fun print() {
val cl = this::class
cl.declaredMemberProperties.filter {it.visibility != KVisibility.PRIVATE}.forEach {
println("${it.name} = ${it.get(this)}")
}
}
私は、コンパイラのエラーを取得しますKClass<SomeClass>
の代わりにthis::class
〜KClass<out SomeClass>
のチェンジャータイプを使用してください。それはどうして起こりますか?
は、ご返信いただきありがとうございます。それは非常に有用です。 –