代码之家  ›  专栏  ›  技术社区  ›  solidak GeminiYellow

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

  •  0
  • solidak GeminiYellow  · 技术社区  · 7 年前

    所以如果我有 jobject 来自jclass clazz1 我想把它输入到jclass clazz2 .你会怎么做?

    我检查一下 Oracle JNI docs 关于铸造的唯一参考是函数 IsAssignableFrom() 但没有更多。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Michael    7 年前

    A. jobject 表示对某个Java对象的引用,但该对象的Java类型并不重要。您始终可以指定一个 jobject项目 给另一个人 jobject项目

    但是,Java类型 真的很重要 一旦您尝试将对象实际用于任何事情,例如调用它的一个方法或访问它的一个字段。

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

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

    这正是 IsAssignableFrom 我会告诉你的。

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