1. 程式人生 > >JNI中java型別與C/C++型別對應關係及介面寫法

JNI中java型別與C/C++型別對應關係及介面寫法

訪問自定義Java物件陣列
The JNI provides a separate set of functions to access elements of object arrays. You can use these functions to get and set individual object array elements.
Note: You cannot get all the object array elements at once.
GetObjectArrayElement returns the object element at a given index.
SetObjectArrayElement updates the object element at a given index.
3) 訪問Java物件的方法:
在本地方法中呼叫Java物件的方法的步驟:
①.獲取你需要訪問的Java物件的類:
jclass cls = (*env)->GetObjectClass(env, obj);
使用GetObjectClass方法獲取obj對應的jclass。
②.獲取MethodID:
jmethodID mid = (*env)->GetMethodID(env, cls, "callback", "(I)V");
使用GetMethdoID方法獲取你要使用的方法的MethdoID。其引數的意義:
env-->JNIEnv
cls-->第一步獲取的jclass
"callback"-->要呼叫的方法名
"(I)V"-->方法的Signature
③.呼叫方法:
(*env)->CallVoidMethod(env, obj, mid, depth);
使用CallVoidMethod方法呼叫方法。引數的意義:
env-->JNIEnv
obj-->通過本地方法穿過來的jobject
mid-->要呼叫的MethodID(即第二步獲得的MethodID)
depth-->方法需要的引數(對應方法的需求,新增相應的引數)
注:這裡使用的是CallVoidMethod方法呼叫,因為沒有返回值,如果有返回值的話使用對應的方法,在後面會提到。
方法的Signature
方法的Signature是由方法的引數和返回值的型別共同構成的,下面是他們的結構:
"(argument-types)return-type"
其中Java程式中引數型別和其對應的值如下: