0

我想使用 JNI 遍历给定类的对象的所有字段值。我找到了 JVMTI 方法GetClassFields来获取jfieldID对象字段的 s。在 JNI API 中,我找到了方法Get<type>Field。但是,要使用这些方法,我首先必须知道我处理的是基元、某种类型的数组还是对象之一。我找到了一个 JNI 方法ToReflectedField,所以我可以调用反射 API 的 Java 方法。但是,这似乎过于复杂且容易出错。

有没有办法使用 JNI 或 JVMTI 的本机函数来实现这一点?

4

1 回答 1

1

您可以使用 JVMTI 获取每个字段的类型,然后调用相应的 GetField 方法:

jvmtiError
GetFieldName(jvmtiEnv* env,
        jclass klass,
        jfieldID field,
        char** name_ptr,
        char** signature_ptr,
        char** generic_ptr)
于 2014-12-23T09:02:10.170 回答