2010-02-27 10 views

risposta

26

Dal momento che gli oggetti in codice Java e C effettivamente utilizzare il stesse posizioni di memoria (l'oggetto passato al codice nativo è lo stesso riferimento di memoria in entrambi i mondi), un semplice

if (someJObject == NULL) {} 

nel codice C dovrebbero essere più che bene immagino. Non ho ancora testato, però :-)

+3

Ho provato questo. Funziona. Un oggetto Java 'null' (come un jobject) == NULL in C++. –

+0

Vedere anche http://java.sun.com/docs/books/jni/html/design.html – tmandry

+1

Sciocco Oracle. Quell'indirizzo non è più valido. Per ora, questo indirizzo IP di Sun funziona per me: http://192.9.162.55/docs/books/jni/html/design.html –

14

commento di Stewori merita di essere una risposta, ecco che è:

(*env)->IsSameObject(env, someJObject, NULL) 

Penso che questo test ha esito positivo in cui il raffronto valore fallisce quando il tipo di riferimento è JNIWeakGlobalRefType , contro un riferimento locale o globale.

Problemi correlati