java - jfieldID 和 jmethodID 是否绑定(bind)到特定类,或者我可以在子类对象上使用它们吗?

标签 java java-native-interface

当我使用 env->GetFieldID(superClass, name, descriptor) (或 env->GetMethodID(superClass, method, descriptor)),我可以在 subClass 类型的对象(继承自 superClass)上使用相同的 ID 吗?

最佳答案

是的,你可以,但是如果派生类覆盖了一个方法,它会引入一个新的 ID。

通过为父类(super class)计算的superID,您将有效地调用

obj.super.method()

您可以将其视为 Java.lang.Class.getDeclaredMethod()Java.lang.Class.getDeclaredFields() 的模拟。

关于java - jfieldID 和 jmethodID 是否绑定(bind)到特定类,或者我可以在子类对象上使用它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30539621/

相关文章:

java - 使用 Rhino 传递 Class<?> 参数

Java 拖放

java - 即使 GetPrimitiveArrayCritical 失败,我是否应该始终调用 ReleasePrimitiveArrayCritical?

java.lang.UnsatisfiedLinkError : Native Library {____. dll} 已经加载到另一个类加载器中

java - C 和 C++ 中的 JNI 调用不同?

java - 如何在 arm-v7 上编译 ftd2xxj?

Java 8将数据从一个列表分区到两个单独的列表

java - 为什么 java 8 时间没有向我显示时区 Etc/GMT+1 的正确时间

java - 如何延迟 Activity 启动的计时器?

c++ - jclass 和 jobject 的 jni deleteRef