我有一个jclass
,我需要找出相应的Java类的名称。关于类似问题,SO上有一个很好的答案,但是,它需要一个对象,该对象是此类的实例:https://stackoverflow.com/a/12730789/634821
我并不总是有一个实例,其中具有jclass
的名称将非常有用,而且我很难相信Java无法通过以下方式找到类的名称,该名称显然是静态属性。只有静态方法。那么,这可行吗,怎么办?
jclass
是引用Java jobject
对象的Class
子类。
因此,请从找到的答案中删除前几行:
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);