2016-04-24 12 views
0

Arbeiten Ich habe eine Klasse, die vergleichbare implementiert, wie in seiner Signatur gezeigt:Vergleichbare Implementierung nicht

public class PairNode<FirstType, SecondType> implements Comparable 

Diese Klasse kompiliert fein und hat eine richtige Methode compareTo.

In einer anderen Klasse, dauert es Konstruktor eine Arraylist von vergleichbarem Objekt in seinem Konstruktor, wie hier gezeigt:

public HeapMinPriorityQueue(ArrayList<Comparable> list) 

Wenn jedoch später, als ich eine Arraylist von PairNodes habe, und ich versuche zu verwenden, der Konstruktor wie folgt aus:

HeapMinPriorityQueue pq = new HeapMinPriorityQueue(list); 

Java sagt mir, dass sie inkompatible Typen, als Arraylist von PairNodes der Zeichen und Ganze Zahlen sind nicht auf eine Arraylist von Vergleichsdaten umgewandelt werden. Aber sollten sie nicht gleichwertig sein, da mein PairNode Comparable implementiert?

+0

https://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-java-generics-implicitly-p – assylias

+0

Oh, danke! Ich nehme an, ich vermutete, dass sie polymorph waren, wenn sie es nicht waren! – MegaZeroX

+0

Sollte sein 'implementiert Vergleichbar >' –

Antwort

0

Assylias hat das für mich geantwortet, indem ich einen Link gepostet habe, aber generische Typen sind nicht polymorph, und deshalb funktionierte das nicht. Ich ändere meine Klasse in eine bestimmte Version, um dies zu beheben. Danke assylias!