2016-10-03 53 views
-4

Here's的方法的代碼:不能通過對象至極一個抽象的一個延伸到一個方法與抽象對象作爲參數

,我試圖調用此方法有:

setUpList(new ArrayList<THEObject>); 

THEObject的代碼:

public class THEObject extends AnyAbstractObject{//Lalala} 

當我正嘗試運行此PROGRAMM控制檯打印:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method setupList(AnyAbstractObject[]) in the type AlphabeticList is not applicable for the arguments (AlphabeticList) 

at Test.Tester.main(Tester.java:22) 

這裏有什麼問題?

+0

有幾個問題。忘記這個類型,爲什麼當它要求一個數組的時候傳遞一個列表。 –

+0

'[]'與ArrayList不同。 – Titus

+0

@布魯諾你可以將鼠標懸停在投票按鈕上,以瞭解他們的目的。 –

回答

4

ArrayList<THEObject>不是ArrayList<AnyAbstractObject>,即使一個THEObjectAnyAbstractObject。這裏有一個問題:

每隻貓都是動物。是每個「房滿貓」「一個」房滿動物「?

起初,似乎是這樣。但事實並非如此。有一些東西你可以用一個做,但不能與另一個做。例如,你可以從一個「」的房間中隨機選擇一個人,並且擁抱貓咪。但是,這是不是你可以放心地使用「滿屋子的動物的」(小心的錯誤,鱷魚等)

在Java中這樣做,我們將不得不類層次public class Cat extends Animal。和「做東西」是應用一種方法。

當你知道你從ArrayList<Cat>需要每一個人元素是Cat

ArrayList<Cat> roomFullOfCats = getKittens(); 
Cat tom = roomFullOfCats.get(42); 

你不能指望你從ArrayList<Animal>採取的單個元素是Cat

ArrayList<Animal> roomFullOfAnimals = getAnimals(); 
Animal jerry = roomFullOfAnimals.get(0); // <-- perfectly legal 
Cat tom = roomFullOfAnimals.get(42); // <-- fails 

這些是Generic Programming的拖鞋傾斜器,並且Java Tutorial chapter on Generic Programming優雅地覆蓋它們。

+0

謝謝,那爲我工作:) –

0

setupList和setUpList不是相同的方法。 Java區分大小寫。

相關問題