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

【深入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文件之中。

 

posted @ 2018-02-02 21:52  假程序猿  阅读(2100)  评论(0编辑  收藏  举报