JNA高级应用:如何实现Java与本地库的类型映射?

2026-05-19 21:590阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1222个文字,预计阅读时间需要5分钟。

JNA高级应用:如何实现Java与本地库的类型映射?

目录 + 简介 + 类型映射的本质 + 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分钟。

JNA高级应用:如何实现Java与本地库的类型映射?

目录 + 简介 + 类型映射的本质 + 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类型底层的数据长度保持一致,这样在进行数据转换的时候就会更加简单。

阅读全文