当前位置: 首页 > 面试题库 >

使用JNI调用Java方法时,“方法签名”参数是什么?

左丘善
2023-03-14
问题内容

我想在Qt中使用JNI调用Android Java方法。我无法理解一个奇怪的“方法签名”参数。这是什么,我应该如何设置?

在示例中,它类似于(II)I(I)I。这是什么意思?

例如:

jint max = QAndroidJniObject::callStaticMethod<jint>("java/lang/Math", "max", "(II)I", a, b);

问题答案:

所有这些都在文档中进行了说明。
http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/types.html

Type Signature   Java Type
Z                boolean
B                byte
C                char
S                short
I                int
J                long
F                float
D                double
L fully-qualified-class ;   fully-qualified-class
[ type           type[]
( arg-types ) ret-type method type

(II)I的方法采用两个整数作为参数并返回一个int。例如int m(int i, int j)

一种方法void print(String message)(Ljava/lang/String;)



 类似资料:
  • 我试图理解当我遇到诸如“groovy.lang.MissingMethodException:无方法签名:Three.method()适用于参数类型”之类的错误时会发生什么:

  • 问题内容: 在C#中,如果希望方法具有不确定数量的参数,则可以使方法签名中的最终参数为a ,以使方法参数看起来像数组,但允许使用该方法的每个人传递尽可能多的该类型的参数如来电者所愿。 我相当确定Java支持类似的行为,但是我不知道如何做到这一点。 问题答案: 在Java中,它称为varargs,其语法看起来像一个常规参数,但类型后面带有省略号(“ …”): vararg参数必须 始终 是方法签名中

  • 在尝试从cpp类调用java中的函数以在memmory中保存布尔值时,出现以下错误。我正在使用一个名为MyAdapter的类。cpp调用MyAdapterJni函数。cpp。我用MyAdapterJni编写了以下函数。清洁石油产品 我在myManager中有以下功能。java类 我在我的logcat上得到以下日志 12-14 12:06:32.024: W/dalvikvm(9575):异常Lja

  • 我试图理解JVM中的调用站点是什么。引用https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.4.3.6 调用站点说明符解析的结果是一个元组,包括: •对, •对, 对、、和实例的引用。 我们还有所谓的调用站点对象https://docs.oracle.com/javase/specs/jvms/se8/html

  • 我的C代码无法找到Java中的公共静态函数调用。它成功地找到了类,没有错误。 我试图将结果返回给回调方法。“5”稍后将被更复杂的内容取代。 我在StackOverflow上似乎也有类似的问题,但是到目前为止没有任何变化似乎有所帮助。也许我有逻辑错误? 我的JNI(更新#2): 此代码包含在此函数中调用的方法中: 我的Java(更新#1): 签名检查: javap-s-pcecutils 公共静态响

  • 问题内容: 我第一次在方法签名中看到它。 我试图访问一个.class文件。它具有如下定义的方法 那个GraphData就是带有getter和setter的POJO。为什么显示.class文件而不是显示? 问题答案: 它是 varargs ,只能在参数列表中最后使用。最后一个参数可以容纳多个对象。 查看“ a”和“ b”如何转换为数组。