我正在编写一个应用程序,我与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层所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)