JNI: Как я могу проверить, является ли jobject нулевым объектом в собственном коде c
JNI: Как я могу проверить, является ли jobject нулевым объектом в собственном c-коде
Ответ 1
Поскольку объекты в Java и C-коде фактически используют одни и те же ячейки памяти (объект, переданный в собственный код, является той же ссылкой на память в обоих мирах), простой
if (someJObject == NULL) {}
в C-коде должно быть прекрасно, я думаю. Я не тестировал его, хотя: -)
Ответ 2
Комментарий Stewori заслуживает ответа, так что вот оно:
(*env)->IsSameObject(env, someJObject, NULL)
Я думаю, что этот тест преуспевает, когда сравнение значений терпит неудачу, когда ссылочным типом является JNIWeakGlobalRefType, vs локальный или глобальный ref.