2023-01-20 254
我正在编写一个应用程序,其中我与JNI呼叫有关,并且每次必须执行getter()访问访问变量值的时间.相反,可以在Java层上访问JNI对象的对象参考,因此只能通过变量名来获得更新的变量值(例如obj.name而不是obj.name而不是obj.getName()).
我有 this 和很多2624806″> this ,但没有得到如何掩盖Java层的对象的路.
编辑
我想从JNI的Java层以这种方式访问OBJ.
private native CustomObj getCPPCustomObjectPointer();
这里的任何建议.
是否可以访问JAVA层上JNI对象的对象引用?
是的,你可以.但是,您不能将其用于访问其属性.您只能将其地址作为long值保存.
如果您想这样做,则应在堆内存中创建C ++对象,并以long数字返回其地址.
MyClass *obj = new MyClass();
return (long) obj;
在Java侧,您可以在任何地方将该地址保存为long号码.由于对象是在堆内存中创建的,因此它们在JNI调用之间将保持有效.
另外,您必须将它们传递给以后的jni呼叫long号码,然后您应该在C ++方面将它们施加到MyClass *.
MyClass *obj = (MyClass *)thatLongNumber;
obj->someProperty; // Access its properties and methods via -> operator
您想从Java side保留对C ++ 对象的参考? 你不能.
用于表示和访问对象/原始的那些实现(C/Java)完全不同.
这就是为什么有这么多 mambo Jambo函数当您从一种数据类型到另一种数据类型时.
以上所述是小编给大家介绍的作为引用指针访问JNI对象到Java层,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26071.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态