使用 Kotlin 1.5.20 访问 Android11 中 TextView 的私有字段?

Accessing private field of TextView in Android 11 using Kotlin 1.5.20?

看到了,但是22票的已接受答案似乎无法编译。答案是

val hello = Hello()
val f = Hello::class.memberProperties.find { it.name == "world" }
f?.let {
    it.isAccessible = true
    val w = it.get(hello) as World
    println(w.foo())
}

,但是class没有memberProperties。我能找到的最接近的是 members,但似乎 return 不是正确的类型。如何获取私有字段“mEditor”?

    val f = TextView::class.members.find {it.name == "mEditor"};
    f?.let{
        it.isAccessible=true;
        val w = it.get(text2)
    }

Unresolved reference: isAccessible

TextView.java

@RemoteView
public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {

....

/**
 * {@link EditText} specific data, created on demand when one of the Editor fields is used.
 * See {@link #createEditorIfNeeded()}.
 */
@UnsupportedAppUsage
private Editor mEditor;

您可以像 java 一样使用 getDeclaredField

    val f = TextView::class.java.getDeclaredField("mEditor")
    f?.let {
        it.isAccessible = true
        Log.d("TYPE:",f.genericType.toString())
    }

日志输出:

TYPE:: class android.widget.Editor