簡體   English   中英

Java通用接口擴展了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM