这可能是一个愚蠢的问题,暴露出对 JNI 缺乏理解。我正在编写一个封装 Java VM 的 C++ 程序:我使用 CallVoidMethod 等调用来调用 VM 内的函数。这纯粹是背景知识,与问题不太相关。
我希望能够找到给定 jclass 实例的 Java 类的名称。有什么办法可以做到这一点吗?我可以像在 Java 程序中那样调用 GetName 函数吗?
The jclass
实例是您的对象,将在其上调用方法;你需要查找getName
上的方法 IDClass
类,然后在jclass
实例使用CallObjectMethod
获得一个jstring
result.
简而言之,是的,你只需调用getName
函数并查看jstring
result.
EDIT
(错误处理已省略)
JNIEnv* env = ...;
// substitute your desired class's specifier for "java/lang/Class"...
jclass cls = env->FindClass("java/lang/Class");
jmethodID mid_getName = env->GetMethodID(cls, "getName", "()Ljava/lang/String;");
jstring name = env->CallObjectMethod(cls, mid_getName);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)