如何引用< < T >>由編譯器在下面的代碼中處理,因爲該方法沒有允許推理T的參數?對列表中可以放置什麼類型的對象有什麼限制嗎?甚至在我將字符串添加到列表的行上發生了演員陣容?我的第一個想法是,沒有任何東西可以推斷T,T就成爲一個對象類型。提前致謝。如果參數化方法不是輸入參數,參數化方法如何解決<T>?
public class App {
private <T> void parameterizedMethod()
{
List<T> list = new ArrayList<>();
for(int i = 0; i < 10; i++)
{
list.add((T)new String()); //is a cast actually occurring here?
}
}
public App()
{
parameterizedMethod();
}
public static void main(String[] args) {
new App();
}
}
謝謝。自從我發現這一點以來,也非常有趣的是,編譯器強制我在將新的String添加到列表時將演員陣容保留至(T)。所以即使我們不知道T是什麼(儘管你指出它是一個Object),但我不得不將任何我添加到列表中的東西都施加到(T)。 – swingMan
對,我們對'T'可能是什麼有一些想法,但我們並不完全知道。編譯器正在執行你未知的內容。 – Radiodef