public long aaaa(){
}
public int aaaa(){
}
接下来,就来解释一下,当程序出现NoSuchMethodException时,JVM为我们提供的异常信息究竟是什么意思。首先我们先看几个方法以及他们的方法签名:
public void test1(){} test1()V
public void test2(String str) test2(Ljava/lang/String)V
public int test3(){} test3()I
从以上三个例子,我们就可以很简单的看出一些小小的规律:
JVM为我们提供的方法签名实际上是由方法名(上文的例子为了简单没有写出全类名)、形参列表、返回值三部分构成的,基本形式就是:
全类名.方法名(形参数据类型列表)返回值数据类型
我们知道了JVM提供的方法签名的结构之后还是不够,因为JVM是并没有特别明确的将数据类型写出来,而是提供了特殊的表示法,下表就是对特殊表示字符、字母与对应数据类型的关系:
Java方法签名中特殊字符/字母含义
特殊字符 数据类型 特殊说明
V void 一般用于表示方法的返回值
Z boolean
B byte
C char
S short
I int
J long
F float
D double
[ 数组 以[开头,配合其他的特殊字符,表示对应数据类型的数组,几个[表示几维数组
L全类名 引用类型 以L开头、结尾,中间是引用类型的全类名
签名一般是使用公私密钥对。自己使用私钥加密,其他人可以任意获取到公钥用来解密,既然解出来了,就说明是私钥加密的。 用私钥加密的过程叫做签名。当然实际过程没这么简单,还包括,找个合适的第三方再次签名公钥已证明公钥的安全性等。不过只要知道上面的东西基本就可以了。