工作中涉及到了JNI,之前JNI对我完全来说就是底层,现在也得接触了。在实际场景中,很容易出现JNI调用JAVA方法的情况,这个时候就需要知道JAVA方法的签名,这里做一下记录。
方法一:使用Javap命令
javap
方法说明如图所示,接着进入class文件所在的文件夹
使用javap -p -s XXX.class
示例
当然仅仅是这样显然是很麻烦的,有时候也不一定能马上编出class文件,而且一般所在的class文件都比较深,实际工作时,操作起来并不方便,那么就看方法二。
方法二:直接写出来
JAVA方法签名是确认的,直接按规则写上签名就行,先看网上的规则表:
签名规则
比如说对于String类,则是:
String --> Ljava/lang/String; (/java/lang/String; 这部分就是全限定类名,其实就是包名加类)
那么对于方法呢,则是前面是方法,后面是返回值:
Point test(int x,float y) --> (IF)Ljava/awt/Point;
在加上数组则是:
Object[] test(byte x,char y) --> (BC)[Ljava/lang/Object;
例子
另外的例子
主要是要注意下内部类的签名方式。
总而言之,就是这些套路,照着来就行。