完全限定类的 JNI 类型签名采用以下形式:
Lclass/path/ClassName;
例如:
"Ljava/lang/String;" // String
"[Ljava/lang/String;" // String[] (array)
通过将参数放在第一个括号内,将返回类型放在右括号之后,从这些中构建方法签名。例如:
long f (int n, String s, int[] arr); // Java method
"(ILjava/lang/String;[I)J" // JNI type signature
您可以在此处找到 JNI 类型签名的文档,这是我借用上述示例的地方。
在您的具体示例中:
void getData( ListDataClass[] arryData ) // Java method
"([Lclass/path/ListDataClass;)V" // JNI type signature
注意:确切的类型签名取决于您的类路径。
然后,您可以按如下方式找到方法 ID(假设C++和一个名为 env 的 JNIEnv 指针):
jclass clz = env->FindClass("class/path/ListDataClass");
jmethodID mid = env->GetMethodID(clz, "getData", "([Lclass/path/ListDataClass;)V");