使用JNI调用Java方法时的“Method Signature”参数是什么?

时间:2015-06-13 05:01:26

标签: java c++ qt java-native-interface signature

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

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

例如:

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

1 个答案:

答案 0 :(得分:4)

这些都在文档中解释过。 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;)