Java 方法簽名詳解及實例代碼
java 方法簽名,我想做java 開發(fā)的朋友也知道,方法簽名的重要性,是方法重載的一個比較好的解釋,尤其是在后續(xù)優(yōu)化方面,這里記錄下,有看到的朋友也可看下,
方法簽名的意義
對于同名不同類、同類不同名的方法,方法簽名的意義并不是很大,但是對于重載方法來說,方法簽名的意義就十分巨大了。由于重載方法之間的方法名是相同的,那么我們勢必要從構(gòu)成方法的其他幾個要素中找到另一個要素與方法名組成能夠唯一標(biāo)示方法的簽名,方法體當(dāng)然不予考慮。那么就是形參列表和返回值了,但是由于對于調(diào)用方法的人來說,方法的形參數(shù)據(jù)類型列表的重要程度要遠(yuǎn)遠(yuǎn)高于返回值,所以方法簽名就由方法名+形參列表構(gòu)成,也就是說,方法名和形參數(shù)據(jù)類型列表可以唯一的確定一個方法,與方法的返回值一點關(guān)系都沒有,這是判斷重載重要依據(jù),所以,以下的代碼是不允許的
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
從以上三個例子,我們就可以很簡單的看出一些小小的規(guī)律:
JVM為我們提供的方法簽名實際上是由方法名(上文的例子為了簡單沒有寫出全類名)、形參列表、返回值三部分構(gòu)成的,基本形式就是:
全類名.方法名(形參數(shù)據(jù)類型列表)返回值數(shù)據(jù)類型
Java方法簽名中特殊字符/字母含義
特殊字符 | 數(shù)據(jù)類型 | 特殊說明 |
---|---|---|
V | void | 一般用于表示方法的返回值 |
Z | boolean | |
B | byte | |
C | char | |
S | short | |
I | int | |
J | long | |
F | float | |
D | double | |
[ | 數(shù)組 | 以[開頭,配合其他的特殊字符,表示對應(yīng)數(shù)據(jù)類型的數(shù)組,幾個[表示幾維數(shù)組 |
L | 全類名; | 引用類型 以 L 開頭 ; 結(jié)尾,中間是引用類型的全類名 |
一定要注意的是方法重載時,方法返回值沒有什么意義,是由方法名和參數(shù)列表決定的
利用javap生成方法簽名
類庫類
$ javap -s java.lang.String Compiled from "String.java" public final class java.lang.String extends java.lang.Object implements java.io.Serializable,java.lang.Comparable,java.lang.CharSequence{ public static final java.util.Comparator CASE_INSENSITIVE_ORDER; Signature: Ljava/util/Comparator; public java.lang.String(); Signature: ()V public java.lang.String(java.lang.String); Signature: (Ljava/lang/String;)V public java.lang.String(char[]); Signature: ([C)V public java.lang.String(char[], int, int); Signature: ([CII)V public java.lang.String(int[], int, int); Signature: ([III)V public java.lang.String(byte[], int, int, int); Signature: ([BIII)V public java.lang.String(byte[], int); Signature: ([BI)V public java.lang.String(byte[], int, int, java.lang.String) throws java.io.UnsupportedEncodingException; Signature: ([BIILjava/lang/String;)V public java.lang.String(byte[], int, int, java.nio.charset.Charset); Signature: ([BIILjava/nio/charset/Charset;)V public java.lang.String(byte[], java.lang.String) throws java.io.UnsupportedEncodingException; Signature: ([BLjava/lang/String;)V public java.lang.String(byte[], java.nio.charset.Charset); Signature: ([BLjava/nio/charset/Charset;)V public java.lang.String(byte[], int, int); Signature: ([BII)V ...
自定義類
package com.demo; public class SigTest { public static final String name = null; public int getName(int[] data,long index) { return 0; } }
輸出
$ javac SigTest.java $ javap -s -p com.demo.SigTest Compiled from "SigTest.java" public class com.demo.SigTest extends java.lang.Object{ public static final java.lang.String name; Signature: Ljava/lang/String; public com.demo.SigTest(); Signature: ()V public int getName(int[], long); Signature: ([IJ)I static {}; Signature: ()V }
-s 表示打印簽名信息
-p 表示打印所有函數(shù)和成員的簽名信息,默認(rèn)只打印public的簽名信息
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
劍指Offer之Java算法習(xí)題精講二叉樹與斐波那契函數(shù)
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03詳解eclipse將項目打包成jar文件的兩種方法及問題解決方法
本文給大家介紹了eclipse中將項目打包成jar文件的兩種方法及其遇到問題解決方法,本文圖文并茂給大家介紹的非常詳細(xì),需要的朋友可以參考下2017-12-12使用Sharding-JDBC對數(shù)據(jù)進行分片處理詳解
這篇文章主要介紹了使用Sharding-JDBC對數(shù)據(jù)進行分片處理詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10基于JavaMail的Java實現(xiàn)簡單郵件發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了基于JavaMail的Java實現(xiàn)簡單郵件發(fā)送功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-09-09詳解Java并發(fā)編程之volatile關(guān)鍵字
這篇文章主要為大家介紹了Java并發(fā)編程之volatile關(guān)鍵字,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-11-11