上一節主要講解Java向native傳參,下面主要講解從native傳相應的資料到java層。
接着上一節,下面主要講解内容如下:
1. native向java傳回字元串類型
2. native向java傳回java對象
3. native向java傳回數組類型
4. native向Java傳回List對象
對于上面的每個都給出對應的例子。
本節所有案例代碼均已放到GitHub上,歡迎下載下傳:
<a href="https://github.com/huangtianyu/JNILearnCourse">https://github.com/huangtianyu/JNILearnCourse</a>
傳基本資料類型很簡單,是什麼就傳什麼就行。傳字元串類型也很簡單,具體jni代碼如下:
其中最主要用的是以下幾個方法:
以上是處理字元串常用的一些方法。
具體看native的代碼如下:
常用建立Object的方法由以下幾個:
這裡直接看native層代碼如下:
基本資料類型數組都有相應的env->NewXXXArray(jsize length);通過該方法可以生成對應的數組。
在生成了對應的數組後,可以通過setXXXArrayRegion(jxxxArray array, jsize start, jsize len, const jchar* buf)來填充數組
直接看native代碼:
其在native生成的方法是<code>jobjectArray joa = env->NewObjectArray(len, cls, obj);</code>
直接看native代碼如下:
對應jni而言,List,ArrayList以及Map,HashMap,Set,HashSet都隻是一個Object,對應于jni而言也就都是jobject,操作jobject都可以用最開始介紹的方法。