我是 Java 新手,我正試圖弄清楚關于泛型的一件事。如果我宣告一個方法
public <T> List<T> toList(final T... arr) { ... }
我可以同時回傳ArrayList和LinkedList嗎?或者例如,如果我宣告了一個方法,例如
public <T> T[] toArray(final List<T> l) { ... }
我可以同時傳遞ArrayList和LinkedList作為引數,它會很好用嗎?
如果這是正確的,它是否也適用于所有物件?因此,如果我創建一個類并對其進行更多次擴展,是否可以使用頂級類作為方法的引數,但在呼叫它時傳遞其子類?
uj5u.com熱心網友回復:
這不是摹只enerics。您可以將任何物件分配給其父類的變數。
Object o = 5; // It's valid
如果您將 aLinkedList或傳遞ArrayList給該toArray()方法,則無關緊要。它將自動轉換為List. 同樣,如果您LinkedList從toArray()方法中回傳 a ,也沒有關系。它將被轉換為List.
但是要記住的一件事是,如果您傳遞 a LinkedList,它將被轉換為List并且您將只能使用List介面的方法。
List list = new LinkedList();
list.addFirst(1); // Invalid
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311149.html
上一篇:如何動態地將型別別傳遞給泛型類
