因此,如果我从jclass jobject
获得clazz1
,我想将其转换为jclass clazz2
。怎么会这样做呢?
我检查了Oracle JNI docs,唯一的关于转换的引用来自函数IsAssignableFrom()
但不多了。
答案 0 :(得分:3)
jobject
表示对某个Java对象的引用,但该对象的Java类型并不重要。您始终可以将一个jobject
分配给另一个jobject
。
但是,一旦您尝试将对象实际用于任何事情,例如调用其中一个方法或访问其中一个字段,Java类型就会重要。
此时,您应确保您提供的对象符合以下要求:
这正是IsAssignableFrom
会告诉你的。
如果您的clazz1
对象符合这些要求,则可以在C ++代码中使用它,就好像它是clazz2
一样。