2017-01-17 24 views
0

我遇到過一個我不確定泛型語法行爲的例子。在Java編譯時刪除泛型語法?

public void m1(List<String> list) { 
    System.out.println("List size" + list.size()); 
} 

public void m1(List<Integer> list) { 
} 

這裏,m1方法被重載,但它給編譯時間錯誤在Eclipse如,

擦除方法M1(列表)的是相同類型的試驗的另一種方法

這些方法的通用語法是否在編譯時被刪除? 任何想法爲什麼會發生這種情況?

+0

看看這個[this](http://stackoverflow.com/questions/1998544/method-has-the-same-erasure-as-another-method-in -類型) – Krishas

回答

0

編譯器不會從.java文件中刪除任何內容,而是創建一個.class文件,並且它不會複製註釋,導入或所有通用信息(有些仍然存在)。請參考下面的線程獲取更多信息: Are generics removed by the compiler at compile time