Hallo liebes Java-Forum,
ich möchte besonders den Anfängern das Interface Comparable näher erläutern. Dazu habe ich eine Beispielklasse erstellt und diese sehr einfach gehalten. Das Interface bietet sehr viel mehr Möglichkeiten als hier besprochen wird.
Das Interface Comparable (aus dem Paket java.lang) dient dazu, Objekte miteinander zu vergleichen und ist folgendermaßen aufgebaut.
Dieses Interface kann von Klassen implementiert werden, deren Objekte paarweise vergleichbar sind.
Die Methode compareTo(Object o) liefert einen int-Wert (Integer) zurück. Dieser Integer kann drei Werte beschreiben.
1. Rückgabewert: kleiner 0 wenn das Objekt "kleiner" ist.
2. Rückgabewert: größer 0 wenn das Objekt "größer" ist.
3. Rückgabewert: gleich 0 wenn das Objekt gleich ist.
Nicht schlimm wenn ihr es bis hier noch nicht ganz versteht. Ich möchte das Verständnis mit folgendem Beispiel vervollständigen.
Beispiel:
Vielleicht ist es noch etwas schwierig nachzuvollziehen besonders für Anfänger. Deshalb könnte vielleicht folgende Übung helfen dieses Konzept besser zu verstehen.
Übung:
Erstelle eine Klasse Computer, welches das Interface Comparable implementiert.
In dieser Klasse sollen zwei Eigenschaften enthalten sein: "hersteller", "arbeitsspeicher".
Vergleicht beide Computer-Objekte auf den "arbeitsspeicher" und entscheidet was passieren soll, wenn ein Computer-Objekt einen größeren Arbeitsspeicher enthält als das zu vergleichende Objekt.
Experementiert viel mit dem Code herum und implementiert ggf. ein weiteres interface welches den "hersteller" der Computer-Objekte zurückgibt.
ich möchte besonders den Anfängern das Interface Comparable näher erläutern. Dazu habe ich eine Beispielklasse erstellt und diese sehr einfach gehalten. Das Interface bietet sehr viel mehr Möglichkeiten als hier besprochen wird.
Das Interface Comparable (aus dem Paket java.lang) dient dazu, Objekte miteinander zu vergleichen und ist folgendermaßen aufgebaut.
Java:
public interface Comparable
{
public int compareTo(Object o);
}
Dieses Interface kann von Klassen implementiert werden, deren Objekte paarweise vergleichbar sind.
Die Methode compareTo(Object o) liefert einen int-Wert (Integer) zurück. Dieser Integer kann drei Werte beschreiben.
1. Rückgabewert: kleiner 0 wenn das Objekt "kleiner" ist.
2. Rückgabewert: größer 0 wenn das Objekt "größer" ist.
3. Rückgabewert: gleich 0 wenn das Objekt gleich ist.
Nicht schlimm wenn ihr es bis hier noch nicht ganz versteht. Ich möchte das Verständnis mit folgendem Beispiel vervollständigen.
Beispiel:
Java:
public class InterfaceProgram implements Comparable
{
public int value1;
public int value2 = 20;
public InterfaceProgram(int value1)
{
this.value1 = value1;
}
public int compareTo(Object o)
{
if( ((InterfaceProgram)o).value1 > value2) // Das Objekt muss einem Casting unterlaufen,
{ // damit o auf die Instanzvariablen der Klasse "InterfaceProgram" zugreifen kann.
System.out.println("Objektvariable ist groesser!");
return 1;
}
else if(((InterfaceProgram)o).value1 < value2)
{
System.out.println("Objekvariable ist kleiner!");
return -1;
}
else
{
System.out.println("Objektvariable ist gleich gross!");
return 0;
}
}
public static void main(String[] args)
{
InterfaceProgram demo = new InterfaceProgram(10);
System.out.println(demo.compareTo(demo) ); // Ausgabe: Objektvariable ist kleiner
// -1
demo.value1 = 20;
System.out.println(demo.compareTo(demo) ); // Ausgabe: Objektvariable ist gleich gross
// 0
demo.value1 = 30;
System.out.println(demo.compareTo(demo) );// Ausgabe: Objektvariable ist groesser
// 1
}
}
Vielleicht ist es noch etwas schwierig nachzuvollziehen besonders für Anfänger. Deshalb könnte vielleicht folgende Übung helfen dieses Konzept besser zu verstehen.
Übung:
Erstelle eine Klasse Computer, welches das Interface Comparable implementiert.
In dieser Klasse sollen zwei Eigenschaften enthalten sein: "hersteller", "arbeitsspeicher".
Vergleicht beide Computer-Objekte auf den "arbeitsspeicher" und entscheidet was passieren soll, wenn ein Computer-Objekt einen größeren Arbeitsspeicher enthält als das zu vergleichende Objekt.
Experementiert viel mit dem Code herum und implementiert ggf. ein weiteres interface welches den "hersteller" der Computer-Objekte zurückgibt.