Подтвердить что ты не робот

JNI: Как я могу проверить, является ли jobject нулевым объектом в собственном c-коде

JNI: Как я могу проверить, является ли jobject нулевым объектом в собственном коде c

4b9b3361

Ответ 1

Поскольку объекты в Java и C-коде фактически используют одни и те же ячейки памяти (объект, переданный в собственный код, является той же ссылкой на память в обоих мирах), простой

if (someJObject == NULL) {}

в C-коде должно быть прекрасно, я думаю. Я не тестировал его, хотя: -)

Ответ 2

Комментарий Stewori заслуживает ответа, так что вот оно:

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

Я думаю, что этот тест преуспевает, когда сравнение значений терпит неудачу, когда ссылочным типом является JNIWeakGlobalRefType, vs локальный или глобальный ref.