java中的签名----转载

这几天不知道怎么了,总是碰到各种各样的NoSuchMethodException异常,但是Java为了方便值给了我们方法的方法签名,这对于刚接触的程序猿来说貌似有点蛋疼。今天从网上好好的百度/google了一下,结合自己掌握的知识,现将有关方法签名的相关信息记录下来,以备以后使用。

首先,先来介绍一下什么是方法签名,说到方法签名,我们就不得不提到java中的方法重载,提到方法重载就不得不提到面向对象的多态,好吧,以上只是说说而已。方法签名,顾名思义,方法的签名,来区分不同方法的标示符。大家都知道java中的方法是必须依赖于类的,方法又是由方法名、形参列表、返回值以及方法体构成的。

其实对于同名不同类、同类不同名的方法,方法签名的意义并不是很大,但是对于重载方法来说,方法签名的意义就十分巨大了。由于重载方法之间的方法名是相同的,那么我们势必要从构成方法的其他几个要素中找到另一个要素与方法名组成能够唯一标示方法的签名,方法体当然不予考虑。那么就是形参列表和返回值了,但是由于对于调用方法的人来说,方法的形参数据类型列表的重要程度要远远高于返回值,所以方法签名就由方法名+形参列表构成,也就是说,方法名和形参数据类型列表可以唯一的确定一个方法,与方法的返回值一点关系都没有,这是判断重载重要依据,所以,以下的代码是不允许的。

 

[java]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. public long aaaa(){  
  2.       
  3. }  
  4.   
  5. public int aaaa(){  
  6.       
  7. }  

 

 

接下来,就来解释一下,当程序出现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方法签名中特殊字符/字母含义
特殊字符数据类型特殊说明
Vvoid 一般用于表示方法的返回值
Zboolean 
Bbyte 
Cchar 
Sshort 
Iint 
Jlong 
Ffloat 
Ddouble 
[数组以[开头,配合其他的特殊字符,表示对应数据类型的数组,几个[表示几维数组
L全类名;引用类型以L开头、;结尾,中间是引用类型的全类名


以上就是对于方法签名以及方法重载的小小解释、说明。一定要注意的是方法重载时,方法返回值没有什么意义,是由方法名和参数列表决定的。

转载于:https://www.cnblogs.com/kaililikai/p/5885671.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值