JNI:用“()[C”签名调用Java方法

时间:2011-12-15 14:05:01

标签: 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()返回的长值。

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

如何访问字符数组?

1 个答案:

答案 0 :(得分:4)

你可以像这样获取char数组这是来自另一篇文章的简单片段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);