JNI将jobject从一个类转换为另一个类

时间:2018-04-25 09:59:00

标签: android android-ndk java-native-interface

因此,如果我从jclass jobject获得clazz1,我想将其转换为jclass clazz2。怎么会这样做呢?

我检查了Oracle JNI docs,唯一的关于转换的引用来自函数IsAssignableFrom()但不多了。

1 个答案:

答案 0 :(得分:3)

jobject表示对某个Java对象的引用,但该对象的Java类型并不重要。您始终可以将一个jobject分配给另一个jobject

但是,一旦您尝试将对象实际用于任何事情,例如调用其中一个方法或访问其中一个字段,Java类型就会重要

此时,您应确保您提供的对象符合以下要求:

  • 对象的类与预期的类完全相同,或者
  • 对象的类是期望类的子类,OR
  • 该对象的类实现了预期的类'接口

这正是IsAssignableFrom会告诉你的。

如果您的clazz1对象符合这些要求,则可以在C ++代码中使用它,就好像它是clazz2一样。