2012-09-11 61 views
1

我想創建一個類讓say說實現泛型接口的Employee Comparable並重寫方法equals,hashCode和toString ...我將如何能夠做到這一點?Java通用接口擴展Comparable

這會是好的

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(){ 

    } 



    } 
+0

這將編譯,但'equals','hashCode'和'toString'不會覆蓋'Object'中的相應方法。 – oldrinb

+0

你想實現什麼? – davidbuzatto

+0

我想設置和獲取英寸和英尺的方法和實現通用接口的類Comparable 並重寫方法equals,hashCode和toString –

回答

2

這個問題有兩個部分。

第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. 
    } 
} 
+0

yeeeeeeeah!感謝兄弟..這就是我想要的......現在我明白了! –

1

一個類可以實現你想盡可能多的接口,沒有必要爲 「組」 他們還有:

class Employee implements Comparable, MinMax{ ... } 

無論如何,您必須提供接口方法實現。

+0

你在這裏提供了什麼,我可以在單個類中做到這一點?謝謝你的幫助 –

0

爲此,您不需要創建自己的單獨界面。

Equals,hashCode和toString是對象類的方法,您的新類將自動成爲子類,因此它將有權訪問這些方法,而無需執行任何操作。要覆蓋這些方法,只需在您的新類中使用您想要的方法創建相同名稱的方法即可。

Comparable是一個通用接口,所以如果你有字母T,你需要用你想要的類替換它。因爲您可能想要將該類的成員與同一類的另一個成員進行比較,您將用Employee替換它。你的類本身不需要是通用的,即使它實現了一個通用接口,所以在你的代碼中不應該有任何'T'

'extends'這個詞是用來創建一個類,它是一個子類另一類。或者當你想要通用接口中的類成爲某個類的子類時。你不需要爲你的課程做這個,所以擴展這個詞在任何地方都不需要。