JNI 将 jobobject 从一个类转换到另一个类

Sol*_*dak 0 java-native-interface android android-ndk

因此,如果我有一个jobjectfrom jclassclazz1并且我想将其类型转换为 jclass clazz2。该怎么做呢?

我检查了Oracle JNI 文档,唯一对转换的引用来自该函数IsAssignableFrom(),但仅此而已。

Mic*_*ael 5

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

然而,一旦您尝试实际使用该对象执行任何操作(例如调用其方法之一或访问其字段之一),Java 类型就变得很重要。

此时,您应该确保您提供的对象满足以下要求:

  • 对象的类与预期的类完全相同,或者
  • 对象的类是预期类的子类,或者
  • 对象的类实现预期的类接口。

这正是IsAssignableFrom我们要告诉你的。

如果您的clazz1对象满足这些要求,您可以在 C++ 代码中使用它,就像它是clazz2.