根据该link的参数,以便调用从本地Java方法(C++)代码JNI方法签名,所述的GetMethodID功能用于:使用JNI派生类型
“返回该方法ID一个类或接口的实例(非静态)方法。“
考虑,作为一个例子,所述文件类的以下构造:
public File(Uri uri)
对于此构造甲JNI方法签名是:
“Ljava/IO/(Landroid.net.Uri;)V“
但是,因为Uri是抽象类,是否有可能使用包含从Uri派生的类型的签名来检索此构造函数的方法ID?我正在问这个问题,因为我使用的环境是基于运行时对象类型自动创建实际签名,但似乎失败了,但我不确定它是否限制了JNI或签名创建代码中的一个错误,或者其他的东西。
*“是否有可能使用包含从Uri派生的类型的签名来检索此构造函数的方法ID?......但在这种情况下似乎失败。”*因此,您的问题的答案将会出现成为“不”。你在问什么?如果不是,你应该澄清这个问题。 – Radiodef
稍微修改了我的问题。我不是JNI专家,我不确定它是否因为JNI不支持而失败。 –
我怀疑你将不得不使用反射('class.getConstructors()'和检查参数类型),但我不是JNI专家,所以我不能肯定地说。如果你使用反射,[JNI有一个转换函数](http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#reflection_support),所以你不必一旦你拥有了正确的'Constructor',就可以建立一个字符串签名。 – Radiodef