将JNI Object作为参考指针访问Java层

将JNI Object作为参考指针访问Java层,第1张

概述我正在编写一个应用程序,我与JNI调用有很多关系,每次我必须执行getter()调用来访问变量值.相反,可以在JavaLayer上访问JNI对象的Object引用,因此只需通过变量名称(例如obj.name而不是obj.getName())获取更新的变量值.我已经检查了this和this,但没有办法在java层将地址转换为Objec

我正在编写一个应用程序,我与JNI调用有很多关系,每次我必须执行getter()调用来访问变量值.相反,可以在Java Layer上访问JNI对象的Object引用,因此只需通过变量名称(例如obj.name而不是obj.getname())获取更新的变量值.

我已经检查了this和this,但没有办法在java层将地址转换为Object.

编辑
我想从JNI的Java层以这种方式访问​​Obj.

private native CustomObj getCPPCustomObjectPointer();

这里有任何建议.

解决方法:

Is it possible to access Object reference of JNI object on Java Layer?

是的你可以.但是,您无法使用它来访问其属性.您只能将其地址保存为长值.

如果您愿意这样做,您应该在堆内存中创建C对象并将其地址作为长数字返回.

MyClass *obj = new MyClass();return (long) obj;

在Java端,您可以将该地址保存为任意位置的长号.由于已在堆内存中创建了对象,因此它们在JNI调用之间保持有效.

此外,您必须将它们作为长号传递给以后的JNI调用,然后您应该将它们转换为C端的MyClass *.

MyClass *obj = (MyClass *)thatLongNumber;obj->someProperty; // Access its propertIEs and methods via -> operator

总结

以上是内存溢出为你收集整理的将JNI Object作为参考指针访问Java层全部内容,希望文章能够帮你解决将JNI Object作为参考指针访问Java层所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1117234.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存