Comparable + Vererbung Funktioniert nicht?

Status
Nicht offen für weitere Antworten.
C

cumuli

Gast
Hi!

also ich hab folgendes Problem vielleicht kann mir wer von euch weiterhelfen
ich habe 3 Klasse die jeweils von einander abgeleitet sind
Code:
public class A implements Comparable<A>{
public int compareTo(A other)
{
 ...
}
}

public class B extends A{
public int compareTo(B other)
{
 ...
}
}

public class C extends B{
public int compareTo(C other)
{
 ...
}
}

und eine 4. Klasse die datenelemente einer LinkedList sortieren soll

Code:
public class D extends LinkedList<A>
{
public boolean add(A a)
	{
			super.add(a);
}
	public void sort()
	{

		Collections.sort(this);
	}

}

so wenn ich nun 10 belibige elemente in die linkedList einfüge(versch Typen A,B,C) und dann die sort methode aufrufe
wird immer nur compareTo von A aufgerufen - ich möchte aber das immer die entsprechenden compareTo Methoden der einzelnen Klassen aufgerufen werden - wie kann ich das machen??

über Hilfe wäre ich dankbar

an der Aufgabenstellung kann ich nichts ändern da es ein Studentenprojekt ist und das alles Vorgaben von meinem Prof sind
 
S

SlaterB

Gast
public class B extends A{
public int compareTo(A other)
{
if (other is B) {
compare like B
} else {
return super.compareTo()
}
}
 
C

cumuli

Gast
genau das geht nicht

also um mal bissl genauer zu werden

die 3 Klassen A,B,C sind bei mir AudioFile,SampledFile,TaggedFile
hier die 3 compareTo Methoden
AudioFile
Code:
	public int compareTo(AudioFile other)
	{
System.out.println("AudioFile");
		if(SortCriterion.getSortCriterion() == SortCriterion.TITLE)
		{
			return this.title.compareTo(other.title);
		}
		else if(SortCriterion.getSortCriterion() == SortCriterion.AUTHOR)
		{
			return this.author.compareTo(other.author);
		}
		else
		{
			return 0;
		}
}
SampledFile
Code:
public int compareTo(SampledFile other)
	{
System.out.println("AudioFile");
		System.out.println("SampledFile");
		if(super.compareTo(other)!= 0)
			return super.compareTo(other);
		if(!(other instanceof SampledFile))
			return 1;
		else
			if((SortCriterion.getSortCriterion() == SortCriterion.DURATION))
				if(this.duration > other.duration)
					return 1;
				else if(this.duration == other.duration)
					return 0;
				else
					return -1;
			else
				return 0;
	}
TaggedFile
Code:
	public int compareTo(TaggedFile other)
	{
System.out.println("TaggedFile");

		if(super.compareTo(other)!= 0)
			return super.compareTo(other);
		if(!(other instanceof TaggedFile))
		{	
			return 1;
		}
		else
			if((SortCriterion.getSortCriterion() == SortCriterion.ALBUM))
			{
				return this.album.compareTo(other.album);
			}
			else
				return 0;
	}

wenn ich z.b. 10 TaggedFile in die Liste Schreiben gibt er mir x-mal AudioFile aus - d.h. er kommt gar nicht in einer der Unterklassen
 
S

SlaterB

Gast
lies mein Posting nochmal genauer, vor allem was ich da als Parameter der Operation geschrieben habe


> public int compareTo(TaggedFile other)
> [..]
> if(!(other instanceof TaggedFile))

wenn der Parameter TaggedFile ist, dann macht doch der instanceof-Test keinen Sinn
 
C

cumuli

Gast
danke - jetzt geht alles ich hab des A bei dir überlesen

hier für alle die es noch interessiert die richtige version - (die nun auch funktioniert)

AudioFile
Code:
public int compareTo(AudioFile other)
	{
		if(SortCriterion.getSortCriterion() == SortCriterion.TITLE)
		{
			return this.title.compareTo(other.title);
		}
		else if(SortCriterion.getSortCriterion() == SortCriterion.AUTHOR)
		{
			return this.author.compareTo(other.author);
		}
		else
		{
			System.out.println("0");
			return 0;
		}
	}
SampledFile
Code:
	public int compareTo(AudioFile other)
	{
		if(super.compareTo(other)!= 0)
			return super.compareTo(other);
		if(!(other instanceof SampledFile))
			return 1;
		else
			if((SortCriterion.getSortCriterion() == SortCriterion.DURATION))
				if(this.duration > ((SampledFile)other).duration)
					return 1;
				else if(this.duration == ((SampledFile)other).duration)
					return 0;
				else
					return -1;
			else
				return 0;
	}
TaggedFile
Code:
	public int compareTo(AudioFile other)
	{
		if(super.compareTo(other)!= 0)
			return super.compareTo(other);
		if(!(other instanceof TaggedFile))
		{	
			return 1;
		}
		else
			if((SortCriterion.getSortCriterion() == SortCriterion.ALBUM))
			{
				return this.album.compareTo(((TaggedFile)other).album);
			}
			else
				return 0;
	}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Zwei Comparable (compareTo) vergleichen Allgemeine Java-Themen 6
M cannot be cast to java.lang.Comparable Allgemeine Java-Themen 5
K Interface Interface comparable machen Allgemeine Java-Themen 9
E Problem mit Generics und Comparable Allgemeine Java-Themen 16
J Comparable aber nicht immer Allgemeine Java-Themen 15
E Heap und Comparable (warning: [unchecked] unchecked cast) Allgemeine Java-Themen 2
M Frage zu Interfaces (Beispiel: Comparable) Allgemeine Java-Themen 13
W [solved] Vector sortieren (Collection / Comparable?) Allgemeine Java-Themen 7
G Generics und Comparable Allgemeine Java-Themen 11
D Frage zu Comparable Allgemeine Java-Themen 3
U Vererbung?! Allgemeine Java-Themen 15
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
MiMa Vererbung und Komposition?? Allgemeine Java-Themen 38
Kirby.exe Vererbung bei Generics Allgemeine Java-Themen 7
L Vererbung Verständnis Probleme Vererbung Allgemeine Java-Themen 2
W Generics + Vererbung Allgemeine Java-Themen 47
M Vererbung mithilfe von Bluej Allgemeine Java-Themen 3
M List -Tableview-Javafx-Vererbung Allgemeine Java-Themen 35
A Vererbung Selbstreferenzparameter Allgemeine Java-Themen 14
D Thema: Vererbung Ober-/Unterklassen Allgemeine Java-Themen 16
D Frage zu Vererbung Allgemeine Java-Themen 5
N Vererbung mit GUI Allgemeine Java-Themen 9
E Vererbung Countable mit Vererbung Allgemeine Java-Themen 6
J 2 Fragen zur Vererbung Allgemeine Java-Themen 5
T Javaklassen und vererbung Allgemeine Java-Themen 32
F Vererbung Allgemeine Java-Themen 5
Neumi5694 Vererbung Restriktive Vererbung Allgemeine Java-Themen 4
A Vererbung Übungsaufgabe Vererbung - Erstellung Klassenhierarchie Allgemeine Java-Themen 1
J Allgemeine Fragen zu Vererbung Allgemeine Java-Themen 1
kaoZ Generics und Vererbung Allgemeine Java-Themen 3
D Problem bei Vererbung abstrakter Klassen Allgemeine Java-Themen 6
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
T Super Klasse Vererbung Problem :/ Allgemeine Java-Themen 10
L Unabhängige Auslieferung bei Vererbung Allgemeine Java-Themen 20
S MVC - Vererbung Allgemeine Java-Themen 4
C Enums und Vererbung Allgemeine Java-Themen 6
F Google Guice + Generics + Vererbung Allgemeine Java-Themen 5
D Unterschied Vererbung und Polymorphie? Allgemeine Java-Themen 4
K Vererbung ohne Basisklasse zu kennen Allgemeine Java-Themen 20
Da_Tebe ArrayList<xyz> Verschachtelung oder Vererbung? Allgemeine Java-Themen 6
faetzminator statische Variablen in Interface - Vererbung? Allgemeine Java-Themen 9
M OOP PropertyChangeListener - Vererbung oder Komposition? Allgemeine Java-Themen 5
S OOP Mehrfache Vererbung von abstrakten Klassen Allgemeine Java-Themen 7
G Designfrage Vererbung ja oder nein Allgemeine Java-Themen 9
S equals - Identität ändern bei Vererbung? Allgemeine Java-Themen 5
dayaftereh Vererbung Hilfe Allgemeine Java-Themen 2
D Vererbung, Reflection und automatischer Methodenaufruf Allgemeine Java-Themen 24
A PropertyChangeListener Vererbung Allgemeine Java-Themen 4
P DefaultTreeCellRenderer Vererbung Allgemeine Java-Themen 5
S Objekte die Objekte enthalten: Keine Vererbung Allgemeine Java-Themen 4
J Vererbung bei abstrakten Klassen Allgemeine Java-Themen 2
S Vererbung: Welche Methode wird verwendet? Allgemeine Java-Themen 9
L Checkstyle: Wann ist eine Methode für Vererbung entworfen? Allgemeine Java-Themen 13
S normale vererbung als interface Allgemeine Java-Themen 2
S statische Methoden und Vererbung Allgemeine Java-Themen 6
R Vererbung - doppelte Paint-Methode Allgemeine Java-Themen 4
R Vererbung mit Interface und Abstract Allgemeine Java-Themen 3
B Vererbung bei enums ? Allgemeine Java-Themen 3
W Frage zu Vererbung / konkretes Beispiel Allgemeine Java-Themen 4
F Vererbung von SessionBeans Allgemeine Java-Themen 3
O abstract, privat, Vererbung Allgemeine Java-Themen 29
L Annotations mit Vererbung Allgemeine Java-Themen 4
M Singleton und Vererbung? Allgemeine Java-Themen 45
T Problem mit Vererbung Allgemeine Java-Themen 3
V Vererbung und Schleifen Allgemeine Java-Themen 5
A Ansatz Objektorientierung, Methoden Vererbung Allgemeine Java-Themen 2
D Listen von Generischen Typen inkl. Vererbung Allgemeine Java-Themen 2
D Zugriffsmethode nach Vererbung ändern? Allgemeine Java-Themen 5
S Vererbung in UML Allgemeine Java-Themen 3
T Nochmal Frage zu Vererbung Interfaces etc. Allgemeine Java-Themen 10
Y Gedanken zur Vererbung Allgemeine Java-Themen 7
F Vererbung, Generizität und Collections. Allgemeine Java-Themen 7
G Frage zu statischen Variablen bei Vererbung Allgemeine Java-Themen 15
F Vererbung Allgemeine Java-Themen 5
S Vererbung von mehreren Klassen? Allgemeine Java-Themen 5
C enum und Vererbung Allgemeine Java-Themen 3
K Problem mit Vererbung - Kein wirklicher Nutzen. Allgemeine Java-Themen 10
G vererbung vs benutzung Allgemeine Java-Themen 7
L Vererbung klappt nicht Allgemeine Java-Themen 5
W Probleme mit Arrays und Vererbung ! Allgemeine Java-Themen 5
M vererbung einer "selbst-instanzierungs-klasse" Allgemeine Java-Themen 16
J Vererbung. Allgemeine Java-Themen 8
H Frage zur Vererbung Allgemeine Java-Themen 5
S private Instanzvaribalen bei "Innerer-Vererbung" Allgemeine Java-Themen 9
H Vererbung auch ohne erzeugung einer Instanz möglich? Allgemeine Java-Themen 3
M frage zur vererbung Allgemeine Java-Themen 12
G Generics und Vererbung. Allgemeine Java-Themen 21
M Vererbung von Hashtables Allgemeine Java-Themen 5
C dynamische Vererbung Allgemeine Java-Themen 6
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
B HeapSort für Array of Strings funktioniert nur teilweise Allgemeine Java-Themen 3
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben