如何从其对应的jclass获取Java类的名称?

问题描述 投票:0回答:1

我有一个jclass,我需要找出相应的Java类的名称。关于类似问题,SO上有一个很好的答案,但是,它需要一个对象,该对象是此类的实例:https://stackoverflow.com/a/12730789/634821

我并不总是有一个实例,其中具有jclass的名称将非常有用,而且我很难相信Java无法通过以下方式找到类的名称,该名称显然是静态属性。只有静态方法。那么,这可行吗,怎么办?

java-native-interface jnienv
1个回答
1
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.