如何解决JNI-如何获取Double.toString方法将jdouble转换为jstring
所以我希望能够使用以下命令将jdouble转换为jstring 来自c ++的内置Double.toString()。
这就是我认为的方式。
jdouble result;
//Get the class for Double so we can get the method id of toString().
jclass doubleObjectClass = env->GetObjectClass("Ljava/lang/Double;");
//Get the Double.toString() method ID.
jmethodID doubleToStringMethodID = env->GetMethodID(doubleObjectClass,"toString",(Ljava/lang/String;");
//Call the toString() method on result.
jstring newString = env->CallObjectMethod(...,doubleToStringMethodID,result);
现在的问题是当我调用getObjectClass和CallObjectMethod时发生了什么。
使用getObjectClass时,它需要从内存中获取一个jobject,而不是一个描述。
使用CallObjectMethod时,我们需要Double对象作为参数(其中'...'是)。
所以我不知道如何进行操作,因为文档不能帮助atm。
任何帮助将非常感谢!
解决方法
有权访问具体的GetObjectClass
时使用jobject
。如果您只有一个类名,那么该类的二进制名称就是FindClass
函数。您正在查找 static 方法ID,因此这是一组不同的函数(GetStaticMethodID
和CallStaticMethodID
)。最后,方法签名必须正确。
将它们放在一起:
jdouble result;
jclass doubleObjectClass = env->FindClass("java/lang/Double");
jmethodID doubleToStringMethodID = env->GetStaticMethodID(doubleObjectClass,"toString","(D)Ljava/lang/String;");
jstring newString = env->CallStaticObjectMethod(doubleObjectClass,doubleToStringMethodID,result);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。