2011-12-15 63 views
1

Java类有getLong()getCharArray()方法,我有jobject链接到这个类。JNI:调用带有“()[C”签名的Java方法

此代码

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"); 
??? 

如何访问字符数组?

回答

4

就可以得到字符数组这样的方式,这是从另一篇文章简单的代码片段完整后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);