2011-03-08 87 views
0

爲什麼這個通用的接口實現不兼容?爲什麼這個通用的接口實現不兼容?

//The type Client<T> must implement the inherited abstract method IClient.compareTo(IClient) 
class Client<T> implements IClient { 

    //The method compareTo(IClient<T>) of type Client<T> must override or implement a supertype method 
    //The Eclipse quick fix creates exactly the same supertype method which is defined in the interface. 
    @Override 
    public int compareTo(IClient<T> o) { 
     return this.getClass().getName().compareTo(o.getClass().getName()); 
    } 
} 

interface IClient<T> extends Comparable<IClient<T>> { 

    @Override 
    int compareTo(IClient<T> o); 

} 

回答

2

哦,我發現有一個名稱衝突: 類型的客戶端的方法的compareTo(IClient)具有相同的擦除爲的compareTo(IClient)型在iClient但不覆蓋它。

IClient是一種原始類型。參考通用類型IClient應參數化

class Client<T> implements IClient<T>將修復它。

+0

這就是@ysdx所說的。 – 2011-03-08 09:02:24

+0

@精英紳士:oliholz在ysdx之前發佈了他的回答。 – 2011-03-08 09:11:03

+0

@Joachim Sauer:對不起,從來沒有見過時間... – 2011-03-08 09:19:45

3
class Client<T> implements IClient<T> { 
+1

是的,發現它,它是如此簡單。有時這有助於寫下問題。 – oliholz 2011-03-08 09:03:28

相關問題