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

ros*_*ani 0 c++ java java-native-interface qt signature

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

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

例如:

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

Cap*_*ffe 5

这一切都在文档中进行了解释。 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
Run Code Online (Sandbox Code Playgroud)

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

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