java - JNI : call Java method with "()[C" signature

标签 java java-native-interface

有一个带有 getLong()getCharArray() 方法的 Java 类,我有这个类的 jobject 链接。

这段代码

jclass clsData = env->GetObjectClass(data);
jmethodID getVal = env->GetMethodID(clsData, "getLong", "()J");
jlong x = env->CallLongMethod(data, getVal);

让我访问 getLong() 返回的 long 值。

jclass clsData = env->GetObjectClass(data);
jmethodID getVal = env->GetMethodID(clsData, "getCharArray", "()[C");
???

如何访问字符数组?

最佳答案

您可以像这样获取字符数组 这是来自另一篇文章的简单片段完整的文章 here

jobject obj = ... // This is the object you want to call the method on
jcharArray arr = (jcharArray) (*env)->CallObjectMethod(env, obj, getVal);
int count = (*env)->GetArrayLength(env, arr);
jchar* chars = (*env)->GetCharArrayElements(env, arr, 0);

关于java - JNI : call Java method with "()[C" signature,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8521337/

相关文章:

java - 如何获取非 case 类的构造函数参数的默认值?

java - 遍历嵌套的括号内容

android - JNI中无法导入 vector

java - 什么是 "hook"以及如何用 Java 编写一个?以及如何与内核通信以了解用户按下的键/向操作系统注册

Android JNI 使用 dlopen() 代替 system.loadlib

java - 如何在 OS X Lion 上安装 Java 原生开发头文件

java - JNI : How to pass "unsigned char* " from C++ to java

java - Apache Jackrabbit 和 Spring 中的事务

java - 如何在 java 中解析复杂的嵌套 JSON?

java - 尽管出现了 fragment 内容,但工具栏内容并未出现