JNI Кастинг объекта из одного класса в другой - PullRequest
0 голосов
/ 25 апреля 2018

Итак, если у меня был jobject из jclass clazz1, и я хотел напечатать его, приведите его к jclass clazz2.Как бы это произошло?

Я проверяю Документы Oracle JNI , и единственная ссылка на приведение происходит из функции IsAssignableFrom(), но не намного.

1 Ответ

0 голосов
/ 25 апреля 2018

A jobject представляет ссылку на некоторый объект Java, но тип Java этого объекта не важен.Вы всегда можете назначить один jobject другому jobject.

Однако тип Java имеет значение , если вы попытаетесь использовать объект для чего-либо, например, для вызова одного из его методов.или доступ к одному из его полей.

На этом этапе вы должны убедиться, что объект, который вы предоставляете, соответствует следующим требованиям:

  • Класс объекта в точности соответствует ожидаемомуclass, OR
  • Класс объекта является подклассом ожидаемого класса, OR
  • Класс объекта реализует интерфейс ожидаемого класса.

Это именно то, что IsAssignableFrom скажет вам.

Если ваш clazz1 объект отвечает этим требованиям, вы можете использовать его в своем коде C ++, как если бы это был clazz2.

...