Kotlin反射访问Java字段访问器Getter和Setter

问题描述

我有以下java类

_17_A.java

package _z_additional;

public class _17_A {
    private int x = 0;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }
}

我正在尝试使用以下Kotlin代码(和Kotlin反射)获取_17_A中的java字段的访问器实例

_17_ObtainingJavaAccessors_Test.kt

package _z_additional

import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
import java.lang.reflect.Method
import kotlin.reflect.KClass
import kotlin.reflect.full.declaredMemberProperties
import kotlin.reflect.jvm.javaGetter
import kotlin.reflect.jvm.javaMethod

@TestInstance(TestInstance.Lifecycle.PER_CLASS)
object _17_ObtainingJavaAccessors_Test {

    @Test
    fun demonstrate() {
        val cls: KClass<*> = _17_A::class
        cls.declaredMemberProperties.forEach {
            val getter1: Method? = it.javaGetter
            val getter2: Method? = it.getter.javaMethod
            println("getter1 = ${getter1}")
            println("getter2 = ${getter2}")
        }
    }

}

输出

getter1 = null
getter2 = null

问题是我得到null s

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)