回答
這意味着班級致力於響應「interface」Comparable定義的方法。
這個(以及其他任何「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。
這意味着該類可以通過函數對其進行操作,該函數將其參數作爲可以與同類型的其他對象(例如預定義的列表排序功能)進行比較的對象。
實現Comparable接口意味着該類支持接口需要的某些功能(具體而言,方法爲compareTo()
),對類進行的排序(或其他)操作將用於完成其工作而無需關心關於其他的課程。
有關詳細信息: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Comparable.html
這意味着這個類的對象可以在集合很容易整理,因爲它們可以相互比較。另一種選擇是實現一個Comparator,它是一個負責排序其他類的類。 Comparable將排序邏輯直接放在類中進行排序;比較器將排序邏輯放在不同的類中。
這意味着,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實例。
實現可比較的接口意味着A可以與A的其他實例進行比較
在涉及排序使用在比較的接口中定義的方法來確定,如果A的實例是Java許多操作大於或小於等於其他實例。
通過實現這些方法,您可以使用很多方便的功能,如Java排序,使用A的實例作爲二叉樹的鍵等等。
除了其他人所說的,通過實現接口(或擴展類),您可以實現超類型合約的編譯器實施。在'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)
- 1. 的Java Syntax-是什麼| =平均
- 2. 在java中可比較的是什麼?
- 3. 什麼是「cgi.parse_qs」平均
- 4. 是什麼@synchronized平均
- 5. 什麼是 「靜態」 在C平均`
- 6. 什麼!* /平均在.gitignore
- 7. 什麼是平均值的注描述
- 8. 什麼可比的Java
- 9. Laravel,什麼是平均值變量$ app
- 10. 什麼是平均收益率無(tornado.gen.moment)
- 11. 什麼是螢火蟲錯誤$(平均
- 12. 字節和平均值是什麼?
- 13. 是什麼\ X平均值用C
- 14. 什麼是11pt平均精度指標?
- 15. 什麼MongoDB中的nscannedObjectsAllPlans解釋平均
- 16. 什麼的someMethod(()=> x.Something)在C#平均
- 17. 什麼呢最終的平均在Groovy
- 18. 比較平均在MYSQL
- 19. 平均百分比
- 20. 列表比平均
- 21. 什麼是熊貓數據框中的平均值的定義?
- 22. 什麼符號:::平均R中
- 23. 在TSQL什麼呢表名(1)平均
- 24. 平均計算從百分比
- 25. 是指從總平均
- 26. solr搜索查詢中的平均facet.field = {!ex = fk3} brands_en_string是什麼?
- 27. 什麼是「內容」:平均在招搖/ OpenAPI的「迴應」:
- 28. 在java中的圖像平均閾值
- 29. 計算平均在Java
- 30. 爲什麼我在我的java代碼中得不到正確的平均值?