2009-08-06 30 views

回答

4

這意味着班級致力於響應「interfaceComparable定義的方法。

這個(以及其他任何「implements」聲明)的好處在於,您可以將「abstract」對象的類型和代碼轉換爲接口。

考慮這個

class A implements Comparable { 
    .... 
} 

class B implements Comparable { 
    .... 
} 


class C implements Comparable { 
    .... 
} 

然後,您可以編寫代碼的東西,可以使用Comparable而不是特定類型:

public void doSomethingWith(Comparable c) { 

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

} 

並調用它像:

doSomethingWith(new A()); 

    doSomethingWith(new B()); 

    doSomethingWith(new C()); 

因爲你不真的不在乎類的類型是什麼,你只關心它實現了接口。

這個(編程接口而不是實現)是OO編程世界中最強大的技術之一,因爲它促進low-coupling

1

這意味着該類可以通過函數對其進行操作,該函數將其參數作爲可以與同類型的其他對象(例如預定義的列表排序功能)進行比較的對象。

實現Comparable接口意味着該類支持接口需要的某些功能(具體而言,方法爲compareTo()),對類進行的排序(或其他)操作將用於完成其工作而無需關心關於其他的課程。

有關詳細信息: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html

0

這意味着這個類的對象可以在集合很容易整理,因爲它們可以相互比較。另一種選擇是實現一個Comparator,它是一個負責排序其他類的類。 Comparable將排序邏輯直接放在類中進行排序;比較器將排序邏輯放在不同的類中。

1

這意味着,A類可以使用可比compareTo方法進行排序:

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); 

可比使用你的類的自然順序進行。

自Java 5以來的另一種方式是Comparator。您可以傳遞此對象,並有多種方法來比較和排序目標類。例如,有時您可能想要按姓氏排序Name類,其他時候按姓排序。 Comparable只給你一種方法,但你可以有幾個Comparator實例。

1

實現可比較的接口意味着A可以與A的其他實例進行比較

在涉及排序使用在比較的接口中定義的方法來確定,如果A的實例是Java許多操作大於或小於等於其他實例。

通過實現這些方法,您可以使用很多方便的功能,如Java排序,使用A的實例作爲二叉樹的鍵等等。

1

除了其他人所說的,通過實現接口(或擴展類),您可以實現超類型合約的編譯器實施。在'Comparable'的情況下,這意味着如果您未能在實現類中實現'int compareTo(A anA)'方法,則會出現編譯器錯誤。將註釋'@Override'添加到實現方法中提供了更多的編譯時安全性;如果你沒有用正確的簽名實現該方法,編譯器會告訴你。編譯時錯誤要比運行時錯誤更容易,更容易修復。此外,實現接口允許將實現類的任何實例視爲將接口類型作爲參數或泛型參數的方法(和構造函數)的接口類型。例如,'java.util.Collections.max(Collection coll)'方法需要一個基類必須擴展'Comparable'的集合。
http://download.oracle.com/javase/7/docs/api/java/util/Collections.html#max(java.util.Collection)