2016-06-27 73 views
3

对不起,这可能是一个基本问题。 JNA直接映射和接口映射有什么区别?JNA直接vs接口映射?

是我的理解是否正确:

  • 直接映射:直接使用库对象(像Java静态主)

  • 接口映射:创建intance的库对象。

在此先感谢!

回答

4

直接映射直接将您的Java方法(用native修饰符声明)绑定到试图按原样使用调用堆栈的本机代码。如果限制函数参数并将值返回原始类型(直接映射最有效)(Pointer类型可能被认为是原始类型)。

接口映射使用Proxy并将Java函数签名动态地转换为通用本机入口点,并带有一系列必须随后被转换为本地原语的参数列表。它更加灵活w/r/t将Java类型转换为本地类型,但是由于参数的运行时转换,速度会更慢。