繁体   English   中英

jni:在 jclass 上调用 object 方法

[英]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 上调用的。

getClassLoaderjava.lang.Class的实例方法,因此您需要使用CallObjectMethod并将其传递给Class实例。 您在mainClass中拥有的是Class的实例(特别是Class<MainActivity>的实例)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM