2009-08-06 5 views

Antwort

4

Dies bedeutet, dass die Klasse verpflichtet ist, auf die Methoden zu reagieren, die durch "interface" Comparable definiert sind.

Der Vorteil, den Sie mit diesem (und jeder anderen "implementiert" Deklaration) haben, dass Sie "abstract" den Typ des Objekts und Code auf der Schnittstelle statt.

Betrachten Sie diese

class A implements Comparable { 
    .... 
} 

class B implements Comparable { 
    .... 
} 


class C implements Comparable { 
    .... 
} 

Sie können dann etwas Code, der Comparable anstelle eines bestimmten Typs verwenden können:

public void doSomethingWith(Comparable c) { 

     c.compareTo(other); // something else... 

} 

Und rufen Sie es mögen:

doSomethingWith(new A()); 

    doSomethingWith(new B()); 

    doSomethingWith(new C()); 

Weil Sie don Es ist wirklich egal, was der Typ der Klasse ist, es interessiert Sie nur, dass es die Schnittstelle implementiert.

Dies (Programm zur Schnittstelle eher zur Implementierung) ist eine der mächtigsten Techniken in der OO-Programmierwelt, denn es fördert low-coupling.

1

Dies bedeutet, dass die Klasse eine Klasse ist, die von Funktionen bedient werden kann, die erwarten, dass ihre Argumente Objekte sind, die mit anderen Objekten desselben Typs verglichen werden können (z. B. die vordefinierte Sortierfunktionalität für Listen). Die Implementierung der Comparable-Schnittstelle bedeutet, dass die Klasse bestimmte Funktionen unterstützt, die die Schnittstelle erfordert (speziell die compareTo()-Methode), dass die Sortierung (oder andere) Operationen, die an der Klasse ausgeführt werden, ihre Arbeit ohne Sorgfalt ausführen über den Rest der Klasse.

Für weitere Informationen: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html

0

Es bedeutet, dass Objekte dieser Klasse können leicht in einer Sammlung sortiert werden, da sie miteinander verglichen werden können. Die andere Option besteht darin, einen Komparator zu implementieren, bei dem es sich um eine Klasse handelt, die für das Sortieren anderer Klassen zuständig ist. Das Vergleichbare setzt die Sortierlogik direkt in die zu sortierende Klasse; Der Komparator setzt die Sortierlogik in eine andere Klasse.

1

Es bedeutet, dass eine Klasse kann mit dem Vergleichbare compareTo-Methode sortiert werden: für die Klasse

A a1 = new A(1); 
A a2 = new A(3); 

// -1, 0, or 1 depending on whether a2 is less than, equal to, or greater than a1 
int order = a1.compareTo(a2); 

Vergleichbare nutzt die natürliche Ordnung.

Eine andere Möglichkeit zu gehen, seit Java 5 ist Comparator. Sie können dieses Objekt übergeben und haben mehr als eine Möglichkeit, die Zielklasse zu vergleichen und zu sortieren. Zum Beispiel möchten Sie manchmal eine Name-Klasse nach dem Vornamen, manchmal nach dem Nachnamen sortieren. Vergleichbar gibt Ihnen nur eine Möglichkeit, dies zu tun, aber Sie können mehrere Vergleichsinstanzen verwenden.

1

eine vergleichbare Schnittstelle implementiert, bedeutet, dass ein mit anderen Instanzen von A.

Viele Operationen in Java verglichen werden, dass, wenn Instanzen einer bestimmen verwenden die Methoden in der Schnittstelle definiert Vergleichbare Sortier beinhalten größer sind dann weniger oder gleich anderen Instanzen.

Durch die Implementierung dieser Methoden können Sie viele praktische Funktionen wie Java-Sortierung, Instanzen von A als Schlüssel für Binärbäume und vieles mehr verwenden.

1

Zusätzlich zu dem, was alle anderen gesagt haben, erhalten Sie durch das Implementieren einer Schnittstelle (oder das Erweitern einer Klasse) die Compiler-Durchsetzung des Vertrags des Supertyps. Im Fall von "Comparable" bedeutet das, dass Sie einen Compilerfehler erhalten, wenn Sie die Methode 'int compareTo (A anA)' in der implementierenden Klasse nicht implementieren können. Das Hinzufügen der Annotation "@Override" zur implementierenden Methode bietet noch mehr Sicherheit bei der Kompilierung; Wenn Sie die Methode nicht mit der richtigen Signatur implementieren, wird der Compiler es Ihnen sagen. Fehler bei der Kompilierungszeit lassen sich viel leichter und kostengünstiger beheben als Laufzeitfehler. Darüber hinaus ermöglicht das Implementieren einer Schnittstelle, dass jede Instanz einer implementierenden Klasse als Schnittstellentyp für Methoden (und Konstruktoren) behandelt wird, die den Schnittstellentyp als Argument oder generischen Parameter verwenden. Die Methode 'java.util.Collections.max (Collection coll)' verwendet beispielsweise eine Auflistung, deren Basistyp 'Vergleichbar' erweitern muss.
http://download.oracle.com/javase/7/docs/api/java/util/Collections.html#max(java.util.Collection)