我正在使用JNI Invocation API尝试将Java库包装为C ++。
我的C ++类本质上是JNI Jobject的容器,具有setter / getter方法来调用JNI并从所述Jobject检索数据。我想弄清楚的是我应该如何尝试复制类实例。例如,我要这样做:
absolute_date CURRENT_DATE = DATE;
我目前的解决方案是拥有一个复制构造器,其工作方式如下:
DATE
的成员数据。CURRENT_DATE
中将Jobject设置为等于新创建的Jobject 从编程和效率上来说,这种方法当然都很繁琐。
复制jobject是理想的选择,但这意味着如果DATE
超出范围,则将调用absolute_date构造函数,然后调用DeleteLocalRef
(因此为新创建的对象制作jobject无效)。
有什么方法可以做我想要的吗?即是否可以通过JNI在JVM中创建Java对象的唯一克隆,以便我可以拥有2个或更多唯一的Jobject引用,每个引用都引用具有相同状态(即,相同的成员值等)的唯一Java对象?我应该提到我无法接触Java源代码。所有这些都必须通过调用调用API来完成。
如果没有,是否有办法使用多个jobject引用来执行此操作,即如果我有十个DATE副本,每个副本共享同一个jobject,是否有可能在最后一个{{1 }}对象被破坏了吗?聪明的指针?如果是这样,因为我还比较陌生,我将如何去做。
谢谢