Использование JNI Я храню ссылку на объект метода Java (obj
) для того, чтобы называть его позже из C:метод JNI объект, называемый на создание
jobject obj = (*newEnv)->NewObject(newEnv, cls, mid);
где newEnv
моя среда, cls
мой класс ID и mid
- это мой идентификатор метода.
Все работает отлично, за исключением того, что при создании этого объекта, который будет использоваться в качестве ссылки позже, он фактически вызывает метод сразу.
Я хотел бы просто создать объект позже и не сразу вызвать метод.
Этот код не хранит объект метод, это создает новый класс. Итак, да, конструктор будет вызываться немедленно. Вы можете сохранить идентификатор метода конструктора, найдя метод. Но создание объекта создаст его немедленно. –
Середина в NewObject должна быть в середине конструктора объекта, а не какого-либо метода на объекте. Если вы передаете какой-либо другой метод, кроме конструктора, вы делаете это неправильно. И если вы хотите вызвать конструктор через CallVoidMethod, вы также делаете это неправильно - конструктор нельзя назвать как метод. –
Отлично, спасибо человеку –