2010-02-27 8 views

Répondre

26

Étant donné que les objets dans le code Java et C réellement utiliser la mêmes emplacements de mémoire (l'objet passé au code natif est la même référence de mémoire dans les deux mondes), un simple

if (someJObject == NULL) {} 

dans le code C devrait être très bien je suppose. Je ne l'ai pas testé si :-)

+3

J'ai testé ça. Ça marche. Un objet Java 'nul' (en tant que jobject) == NULL en C++. –

+0

Voir aussi http://java.sun.com/docs/books/jni/html/design.html – tmandry

+1

idiot Oracle. Cette adresse n'est plus valide. Pour l'instant, cette adresse IP Sun travaille pour moi: http://192.9.162.55/docs/books/jni/html/design.html –

14

commentaire de Stewori mérite d'être une réponse, si elle est ici:

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

Je pense que ce test réussit là où la comparaison de la valeur échoue lorsque le type de référence est JNIWeakGlobalRefType , vs une ref locale ou globale.

Questions connexes