0

我有一个jclass,我需要找出对应的 Java 类的名称。对于类似的问题,SO 上有一个广受欢迎的答案,但是,它需要一个作为此类实例的对象:https ://stackoverflow.com/a/12730789/634821

我并不总是有一个实例,其中具有 a 的名称jclass会非常有用,而且我很难相信 Java 无法找到一个类的名称,这显然是一个静态属性,只有静态方法。那么,它是否可行,如何实现?

4

1 回答 1

1

Ajclassjobject引用 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);
于 2020-05-18T14:40:13.250 回答