获取Java方法签名_tom-blog的博客-程序员宝宝

技术标签: java  android  Java获取方法签名  

输入javap -s 包名.类名即可得到该类的中所有方法签名

如:d:/classes/Hello.class,就输入javap -s Hello
如:d:/classes/com/lqr/test/Hello.class,则输入javap -s com.lqr.test.Hello


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

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

public long aaaa(){  
      
}  
  
public int aaaa(){  
      
}  
例子

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开头、;结尾,中间是引用类型的全类名

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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yurenfan/article/details/54791123

智能推荐

C#:使用MD5对用户密码加密与解密(转载)_c# md5(password);_aRwanG的博客-程序员宝宝

转载:https://www.cnblogs.com/healer007/p/5062189.htmlC# MD5加密字符串        C#中常涉及到对用户密码的加密于解密的算法,其中使用MD5加密是最常见的的实现方式。本文总结了通用的算法并结合了自己的一点小经验,分享给大家。一.使用16位、32位、64位MD5方法对用户名加密1)16位的MD5加密/// <sum...

面试题-给定一个“flatten”Dictionary对象,根据键转换成嵌套字典对象_对象的键名是点分割的怎么变成嵌套类型__Sol_的博客-程序员宝宝

题目:给定一个“Flatten” Dictionary 对象其键是点分割的,例如:{"A":1,"B.A":2,"B.B":3,"CC.D.E":4,"CC.D.F":5},实现一个函数,将其转换 为一个嵌套的字典对象,根据上面例子,嵌套对象结果为{A:1,"B":{"A":2,"B":3},"CC":{"D":{"E":4,"F":5}}}答案 /** * {A:1, B.A:2 B.B:3 CC.D.E:4 CC.DF:5} * @param args */

现货!《PHP7实践指南:o2o网站与App后台开发》京东天猫有售_u014582551的博客-程序员宝宝

终于发售了,啥也不想说了,喜欢的或需要的就点击 链接 进去购买吧。另外此书将作为 2017 PHP全球开发者大会 现场活动用书天猫购书包邮 PHP7实践指南:O2O网站与App后台开发 数据库设计 PHP开发工程 适合作为企业内部培训、培训机构和大专院校的教学参考书京东购书PHP7实践指南:O2O网站与App后台开发 陈小龙 PHP7语言编程教程书籍 php7PHP全球开发者大会2017 PHP ...

深入理解C#中yield return的用法_c#yield return_忆水思寒的博客-程序员宝宝

<h1><a name="t0"></a><a name="t0"></a><a id="_0"></a>简介</h1>yield return 是C#中特有的一个关键字,主要的使用是用于可遍历的数组的数据返回。具体如何理解,让我们通过一个实例来看一下。实例要求:写一个函数,返回指定范围的奇数。这个需求很容易实现,常规的写法如下所示:public IEnumerable&l...

物联网工程专业属于计算机类吗,物联网工程属于计算机专业吗_延静斋孙的博客-程序员宝宝

,小学教育属于什么类专业小学教育专业属于教育学类别。小学教育专业培养德、智、体全面发展的,具有较高教育理论素养和较强教育实际工作能力(语、数、英)小学教师及教育科研、各级教育行政管理人员和其他教育工作者。不是,物联网工程本身就是一个专业,属于工学范畴。本专业学生要具有较好的数学和物理基础,掌握物联网的相关理论和应用设计方法,具有较强的计算机技术和电子信息技术的能力。工商管理类包括哪些具体专业工商管...

ubuntu安装dbus_gdizcm的博客-程序员宝宝

1. 命令行输入: sudo apt-get install dbus2. 在程序中引用dbus/dbus.h,报错,提示没有该文件。于是在/usr/include下查找,发现dbus的目录名为:/usr/include/dbus-1.0/dbus。 于是在/usr/include下做个软链接: sudo ln dbus-1.0/dbus/ -s dbus3. 再次运行...

随便推点

DBA_TABLES.EMPTY_BLOCKS_cracknight1982的博客-程序员宝宝

BMB versus Freelist Segment: DBMS_SPACE.UNUSED_SPACE and DBA_TABLES.EMPTY_BLOCKS [ID 149516.1] ...

逆向输出_boblam的博客-程序员宝宝

如果int[] x = … 已经指向一个整型数组,我们想把数组中的元素翻转(比如:1,2,3,4,5 变成:5,4,3,2,1),写了如下代码,请完善之:      for(int i=0; i        int t = x[i];        x[i] = ______________;        ______________ = t;      } 总结:

java.PreparedStatement.setTimestamp()与java.sql.Timestamp保存日期类型_whirlsun的博客-程序员宝宝

保存日期包括时分秒,要使用java.PreparedStatement .setTimestamp()。如果日期为字符串类型先转化为日期类型,再转化为Timestamp类型,再保存。代码:import java.sql.*;...Connection conn=....Connection conn=null;String mydate="2004-12-12 12:12:12";java.tex

从顺势而为向道法自然_rerepop的博客-程序员宝宝

近来对之前进行过一些反思和自我批评,才发现要在资本市场中长久的生存并取得优秀的成绩,必须提升自己的认知:交易应该基于自然法则。除了技术所能揭示的循环理念之外,更重要的是要结合道:道,其实应该是一种概率。在低买高买的自然循环法则中,要提升低买高卖的概率,除了对循环的势进行有限的认知之外;更应该从道的概率上去把握交易的精髓。显然,根据质地选择优秀的成长型企业,可以显著的提高概率,甚至具有弥补因

ue4显示变量_【程序猿】虚幻引擎4: 将C++变量暴露给蓝图_珠小宝的博客-程序员宝宝

原标题:【程序猿】虚幻引擎4: 将C++变量暴露给蓝图翻译:王成林(麦克斯韦的麦斯威尔)审校:黄秀美(厚德载物) 在这篇教程中我将为你们展示将代码中的变量暴露给UE4编辑器所需要的工作流程。虽然这篇教程是关于变量的,但是暴露代码的其它内容所需的工作流程几乎相同。即使这篇文章有些长,但是该过程很简单。在你完成该教程后,暴露变量和代码的其它内容对你来说就是小菜一碟了。将变量,方法,等等……暴露给UE4...

推荐文章

热门文章

相关标签