上一节主要讲解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都可以用最开始介绍的方法。