JNA高级应用:如何实现Java与本地库的类型映射?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1222个文字,预计阅读时间需要5分钟。
目录 + 简介 + 类型映射的本质 + TypeMapper + NativeMapped + 总结 + 简介 + JNA中多种映射 + 库的映射 + 函数的映射 + 函数参数和返回值的映射 + 库和函数的映射比较简单 + 我们在之前的文章中介绍了...
目录- 简介
- 类型映射的本质
- TypeMapper
- NativeMapped
- 总结
JNA中有很多种映射,library的映射,函数的映射还有函数参数和返回值的映射,libary和函数的映射比较简单,我们在之前的文章中已经讲解过了,对于类型映射来说,因为JAVA中的类型种类比较多,所以这里我们将JNA的类型映射提取出来单独讲解。
类型映射的本质我们之前提到在JNA中有两种方法来映射JAVA中的方法和native libary中的方法,一种方法叫做interface mapping,一种方式叫做direct mapping。
但是我们有没有考虑过这两种映射的本质是什么呢?
比如native有一个方法,我们是如何将JAVA代码中的方法参数传递给native方法,并且将native方法的返回值转换成JAVA中函数的返回类型呢?
答案就是序列化。
因为本质上一切的交互都是二进制的交互。JAVA类型和native类型进行转换,最简单的情况就是JAVA类型和native类型底层的数据长度保持一致,这样在进行数据转换的时候就会更加简单。
本文共计1222个文字,预计阅读时间需要5分钟。
目录 + 简介 + 类型映射的本质 + TypeMapper + NativeMapped + 总结 + 简介 + JNA中多种映射 + 库的映射 + 函数的映射 + 函数参数和返回值的映射 + 库和函数的映射比较简单 + 我们在之前的文章中介绍了...
目录- 简介
- 类型映射的本质
- TypeMapper
- NativeMapped
- 总结
JNA中有很多种映射,library的映射,函数的映射还有函数参数和返回值的映射,libary和函数的映射比较简单,我们在之前的文章中已经讲解过了,对于类型映射来说,因为JAVA中的类型种类比较多,所以这里我们将JNA的类型映射提取出来单独讲解。
类型映射的本质我们之前提到在JNA中有两种方法来映射JAVA中的方法和native libary中的方法,一种方法叫做interface mapping,一种方式叫做direct mapping。
但是我们有没有考虑过这两种映射的本质是什么呢?
比如native有一个方法,我们是如何将JAVA代码中的方法参数传递给native方法,并且将native方法的返回值转换成JAVA中函数的返回类型呢?
答案就是序列化。
因为本质上一切的交互都是二进制的交互。JAVA类型和native类型进行转换,最简单的情况就是JAVA类型和native类型底层的数据长度保持一致,这样在进行数据转换的时候就会更加简单。

