Acceda al objeto JNI a la capa de Java como puntero de referencia

Estoy escribiendo una aplicación donde tengo mucho que ver con la llamada JNI y cada vez que tengo que realizar la llamada getter() para acceder a los valores de las variables. En cambio, es posible acceder a la referencia de objetos del objeto JNI en Java Layer para que pueda obtener el valor de la variable actualizada sólo con el nombre de la variable (como obj.name lugar de obj.getName() ).

Tengo cheque con esto y esto , pero no conseguir manera cómo a la dirección encubierta al objeto en la capa de java.

EDIT Quería acceder a Obj de esta manera en la capa Java de JNI.

 private native CustomObj getCPPCustomObjectPointer(); 

Cualquier sugerencia aquí.

¿Es posible acceder a la referencia Object del objeto JNI en Java Layer?

Sí tu puedes. Sin embargo, no puede utilizarlo para acceder a sus propiedades. Sólo puede mantener su dirección como un valor long .

Si desea hacerlo, debe crear sus objetos C ++ en memoria heap y devolver sus direcciones como números long .

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

En Java lado puede guardar esa dirección como un número long donde quiera. Dado que los objetos han sido creados en memoria heap, permanecerán válidos entre las llamadas JNI.

Además, tienes que pasarlas a llamadas JNI posteriores como un número long y, a continuación, debes convertirlas en MyClass * en tu lado de C ++.

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

¿Desea conservar una referencia a un objeto C ++ desde su lado Java ? Usted no puede .

Esas implementaciones (C / Java) para representar y acceder a objetos / primitivas son completamente diferentes. Es por eso que hay tantas funciones de mambo jambo cuando se emite desde un tipo de datos a otro.

  • Android Añadir soporte nativo - jni.h no resuelto, android / log.h etc
  • Crear mapa de bits de la matriz de bytes, que se descomprime desde un archivo JPEG a través de libjpeg
  • ¿Cómo puedo manejar las llamadas a AudioTrack de jni sin estrellarse?
  • Cómo pasar correctamente un archivo FileDescriptor a FFmpeg usando JNI en Android
  • ¿Cómo podemos agregar la imagen animada / simple como una capa superior al video y exportarla como un solo video en Android?
  • ¿Cómo utilizar Java con NDK Android?
  • CLI en DalvikVM falla en JNI lib
  • ¿Debería evitarse también el finalizador de Java para la gestión del ciclo de vida de los objetos nativos?
  • ¿Impedir que las funciones sean eliminadas de una biblioteca estática cuando están enlazadas en una biblioteca compartida?
  • Temporizador de alta precisión en Android JNI
  • JNI ERROR DETECTADO EN APLICACIÓN: entrada no es válida UTF-8 modificado: byte de inicio ilegal 0xfc.
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.