[英]Access JNI Object to Java layer as reference pointer
是否可以在Java Layer上訪問JNI對象的Object引用?
是的你可以。 但是,您無法使用它來訪問其屬性。 您只能將其地址保存為long
值。
如果您願意這樣做,您應該在堆內存中創建C ++對象並將其地址作為long
數字返回。
MyClass *obj = new MyClass();
return (long) obj;
在Java端,你可以說地址保存為一個long
,無論你想數。 由於已在堆內存中創建了對象,因此它們在JNI調用之間保持有效。
此外,您必須將它們作為一個long
數字傳遞給以后的JNI調用,然后您應該將它們轉換為C ++方面的MyClass *
。
MyClass *obj = (MyClass *)thatLongNumber;
obj->someProperty; // Access its properties and methods via -> operator
您想要從Java端保留對C ++對象的引用嗎? 你不能 。
用於表示和訪問對象/原語的那些實現(C / Java)是完全不同的。 這就是為什么當你從一種數據類型轉換到另一種數據類型時,有如此多的mambo jambo函數 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.