Почему эта реализация универсального интерфейса не компилируется? - PullRequest
0 голосов
/ 08 марта 2011

Почему эта реализация универсального интерфейса не компилируется?

//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 ]

3 голосов
/ 08 марта 2011
 class Client<T> implements IClient<T> {
2 голосов
/ 08 марта 2011

О, я узнал, что есть столкновение имен: Метод compareTo (IClient) типа Client имеет такое же стирание, что и CompareTo (IClient) типа IClient, но не переопределяет его. IClient является необработанным типом. Ссылки на универсальный тип IClient должны быть параметризованы

class Client<T> implements IClient<T> это исправит.

...