![](/img/trans.png)
[英]Java Collection compare generic class that extends interface that extends comparable
[英]Java generic interface extends Comparable
我想創建一個類讓我們說實現泛型接口Comparable的Employee並覆蓋方法equals,hashCode和toString ......我怎么能這樣做?
這樣可以
interface MinMax<T extends Comparable<T>> {
T equals();
T hashCode();
T toString();
}
和
class Employee<T extends Comparable<T>> implements MinMax<T> {
public T equals(){
}
public T hashCode(){
}
public T toString(){
}
}
問題分為兩部分。
第1部分:覆蓋equals,hashCode和toString。
只需使用新實現重新定義新類中的方法即可。
class Employee {
//fields and other methods
public boolean equals(Object other) {
//new implementation here
}
public int hashCode() {
//make sure two equal objects produce the same hashCode
}
public String toString() {
//return whatever you want here
}
}
第2部分:實現Comparable接口。
我假設您希望與其他員工進行比較。 聲明它實現Comparable,並實現接口描述的compareTo方法。
public Employee implements Comparable<Employee> {
//fields and methods
public int compareTo(Employee e) {
//new implementation. Should probably be consistent with equals.
}
}
一個類可以實現你想要的任意數量的接口,也不需要將它們“分組”:
class Employee implements Comparable, MinMax{ ... }
無論如何,您必須提供接口方法實現。
為此,您無需創建自己的獨立界面。
Equals,hashCode和toString是對象類的方法,您的新類將自動成為它們的子類,因此它可以訪問這些方法而無需您執行任何操作。 要覆蓋這些方法,只需在新類中創建具有相同名稱的方法,並使用您希望方法執行的操作。
Comparable是一個通用接口,所以如果你有字母T,你需要將它替換為你想要的類。 由於您可能希望將該類的成員與同一類的另一個成員進行比較,因此您將其替換為Employee。 您的類本身不需要是通用的,即使它實現了一個通用接口,所以代碼中不應該有任何'T'
'extends'這個詞適用於你想要創建一個類,它是另一個類的子類。 或者,當您希望通用接口中的類成為某個類的子類時。 您不需要為您的班級執行此操作,因此不需要在任何地方使用單詞extends。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.