JNI 获取jclass对象的方法

在 JNI 中,获取 jclass 对象的方法主要有以下几种:

1、使用 FindClass 这是最常用的方法,通过类的全限定名来查找对应的jclass对象。

jclass clazz = env->FindClass("java/lang/String");

2、使用 GetObjectClass 当你已经有了一个Java对象的引用时,可以使用这个方法来获取它的jclass对象。

jclass clazz = env->GetObjectClass(obj);

3、使用 GetSuperClass 如果你想获取某个类的父类的 jclass 对象,可以使用这个方法。

jclass superClazz = env->GetSuperclass(clazz);

 

示例:

复制代码
#include <jni.h>
 
extern "C" JNIEXPORT jint JNICALL
Java_com_example_myapp_MainActivity_getAnswer(JNIEnv *env, jobject /* this */) 
{
    // 获取String类的jclass
    jclass stringClass = env->FindClass("java/lang/String");
    // 使用完毕后,记得释放
    env->DeleteLocalRef(stringClass);
 
    // 获取某个String对象的jclass
    jstring str = env->NewStringUTF("Hello from JNI!");
    jclass stringObjClass = env->GetObjectClass(str);
    env->DeleteLocalRef(stringObjClass);
 
    // 获取String类的父类,即Object类的jclass
    jclass objectClass = env->GetSuperclass(stringObjClass);
    env->DeleteLocalRef(objectClass);
 
    return 0;
}
复制代码

 

 
posted @ 2025-08-15 19:02  tomato-haha  阅读(8)  评论(0)    收藏  举报