我有一个jclass
,我需要找出对应的 Java 类的名称。对于类似的问题,SO 上有一个广受欢迎的答案,但是,它需要一个作为此类实例的对象:https ://stackoverflow.com/a/12730789/634821
我并不总是有一个实例,其中具有 a 的名称jclass
会非常有用,而且我很难相信 Java 无法找到一个类的名称,这显然是一个静态属性,只有静态方法。那么,它是否可行,如何实现?
我有一个jclass
,我需要找出对应的 Java 类的名称。对于类似的问题,SO 上有一个广受欢迎的答案,但是,它需要一个作为此类实例的对象:https ://stackoverflow.com/a/12730789/634821
我并不总是有一个实例,其中具有 a 的名称jclass
会非常有用,而且我很难相信 Java 无法找到一个类的名称,这显然是一个静态属性,只有静态方法。那么,它是否可行,如何实现?
Ajclass
是jobject
引用 javaClass
对象的子类。
所以,把你找到的答案的前几行删掉:
jclass input = ...; // Class<T>
jclass cls_Class = env->GetObjectClass(input); // Class<Class>
// Find the getName() method on the class object
mid = env->GetMethodID(cls_Class, "getName", "()Ljava/lang/String;");
// Call the getName() to get a jstring object back
jstring strObj = (jstring)env->CallObjectMethod(input, mid);
// Now get the c string from the java jstring object
const char* str = env->GetStringUTFChars(strObj, NULL);
// Print the class name
printf("\nCalling class is: %s\n", str);
// Release the memory pinned char array
env->ReleaseStringUTFChars(strObj, str);