2015-06-13 125 views
0

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

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

例如:

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

回答

3

它所有在文档说明。 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;)

+0

非常感谢。 (二)我现在看起来很简单。但是(Ljava/lang/String;)是什么?我无法理解这个签名。 – rostamiani

+1

@rostamiani L表示一个完整的类名。 ';'需要表示类名的结尾。当然String是java.lang.String的缩写。 –