检查jobject是否是使用Java JNI的数组



假设我有一个JNI代码中未知(任意)类型的job对象。我如何检查它是否是一个数组?查找数组元素类型的额外加分。

因此,JNI似乎没有提供快捷功能来检查数组,因此必须模拟调用标准Java方法Class.isArray (obj是要测试的jobobject):

jmethodID Class_isArray_m = (*env)->GetMethodID(env, Class_class, "isArray", "()Z");
jclass obj_class = (*env)->GetObjectClass(obj);
jboolean is_array = (*env)->CallBooleanMethod(obj_class, Class_isArray_mid);

元素类型可以用类似的方法使用Class.getComponentType()找到。然而,取决于什么本地代码想要做的,它可能更容易得到编码类型名称使用Class.getName() (https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getName())和解析它-一个数组类型开始与'[',如果有一个字母之后,它的基本类型的数组,否则它的对象数组(特别是,它可能是多维数组)。

相关内容

  • 没有找到相关文章

最新更新