![](/img/trans.png)
[英]JNI CALL change jclass parameter or how to obtain a jobject from a jclass parameter
[英]jni: call object method on jclass
我遇到了这段代码
jclass mainClass = env->FindClass("com/example/MainActivity");
jclass classClass = env->FindClass("java/lang/Class");
jclass classLoaderClass = env->FindClass("java/lang/ClassLoader");
jmethodID getClassLoaderMethod = env->GetMethodID(classClass, "getClassLoader", "()Ljava/lang/ClassLoader;");
jobject classLoader = env->CallObjectMethod(mainClass, getClassLoaderMethod);
jmethodID findClassMethod = env->GetMethodID(classLoaderClass, "findClass", "(Ljava/lang/String;)Ljava/lang/Class;");
令我惊讶的是,它实际上正在工作。 classLoader 和 findClassMethod 有效,可用于后续调用 java。
有人可以解释为什么CallObjectMethod
行在这里工作,因为 getClassLoader 方法是 object 方法,但它是在 jclass 上调用的。
getClassLoader
是java.lang.Class
的实例方法,因此您需要使用CallObjectMethod
并将其传递给Class
实例。 您在mainClass
中拥有的是Class
的实例(特别是Class<MainActivity>
的实例)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.