我见过的大多数示例使用JNI将主要类型的参数传递给可以根据this轻松映射的本机方法
我的问题是关于复杂类型,例如java对象,可以将它作为本机方法参数传递吗?以及如何在c ++方面使用它?
答案 0 :(得分:3)
当然可以访问对象。 JNI spec在章节
中很好地描述了这些原则基本摘录如下:
JNI 不为您的类提供C ++对应项。 每个对象类型都作为不透明jobject
(或'jstring'或'jarray'等)传递给C代码。
JNI为您提供了一些实用工具,可以从这些jobject
中提取其他元信息,例如字段和方法的ID。 GetIntField
是其中一种实用方法。
如果您有字段ID,则可以使用SetIntField
等方法设置字段的值,或使用SetIntField
或GetIntField
检索字段。
这只是一个粗略的概述。