检查Java对象是否是JNI中的数组类型

时间:2010-03-29 15:28:03

标签: java java-native-interface

假设我在Java中有一个MyClass类,有没有办法在JNI中检查jobjectMyClass[][]

我最初的想法是使用env->IsInstanceOf(myobj, myArrayClass),但是调用env->FindClass("[MyClass")会引发NoClassDefFoundError

2 个答案:

答案 0 :(得分:3)

我知道这个问题很老但是......

要查找数组的类,请使用:

env->FindClass("[[Lmy/package/MyClass;")

答案 1 :(得分:1)

JNI有点生疏,但有几件事情:

在完全限定的类名上调用FindClass(),使用“/”作为分隔符而不是点。因此,例如,如果您的课程为"my.package.MyClass",则可以致电env->FindClass("my/package/MyClass")

由于你有一个对象类型的二维数组,你需要调用env->GetObjectArrayElement()两次;一次得到一行,另一次得到一个独特的元素。然后,您可以在该元素上调用env->IsInstanceOf()。确保你查找这些JNI呼叫的正确签名,我把它们作为练习留给读者:)