方法重载(只要不同返回类型可以通过编译)
方法的重载是通过不同的参数(参数顺序和参数类型)决定的,但下面的情况也可以通过编译:
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文件之中。