方法的重載是通過不同的參數(參數順序和參數類型)決定的,但下面的情況也可以通過編譯:
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文件之中。