方法重載(只要不同返回類型可以通過編譯)


【深入Java虛擬機】之六:Java語法糖

方法的重載是通過不同的參數(參數順序和參數類型)決定的,但下面的情況也可以通過編譯:

public class FanxingTest{  
    public int method(List<String> list){  
        System.out.println("List String");  
        return 1;  
    }  
    public boolean method(List<Integer> list){  
        System.out.println("List Int");  
        return true;  
    }  
}  

重載和泛型無關,因為編譯參數會被擦除。

Java代碼中的方法特征簽名只包括了方法名稱、參數順序和參數類型,並不包括方法的返回值,

讓上述代碼能通過編譯,共存於同一個Class文件之中,要看字節碼的方法特征簽名(和代碼方法特征簽名不同):

不僅包括了Java代碼中方法特征簽名中所包含的那些信息,還包括方法返回值及受查異常表

為兩個重載方法加入不同的返回值后,因為有了不同的字節碼特征簽名,它們便可以共存於一個Class文件之中。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM