方法重载(只要不同返回类型可以通过编译)


【深入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