2015-05-06 3 views
1

У меня есть этот метод интерфейса в Animalinterface:метод и реализации общего интерфейса классы

<T extends Animal> boolean isEqual(T pAnimal); 

теперь я нахожусь в ладах с реализацией. У меня есть два класса: Dog и Cat. Оба класса extends от Animal. Я хочу, чтобы переписать метод, но с конкретной реализацией:

@Override 
public boolean isEqual(Dog pDog) { 
    // do some stuff. 
    return true; 
} 

это приводит к ошибке компиляции

must override or implement a supertype method 

Как я должен определить интерфейс, так что не надо делать typecast в моем конкретном классе реализации?

Заранее спасибо

Стефан

ответ

5

Это будет работать, если вы перемещаете параметр типа на уровне интерфейса:

public interface MyInterface<T extends Animal> { 
    boolean isEqual(T pAnimal); 
} 

Тогда

public class Dog implements MyInterface<Dog> { 
    @Override 
    boolean isEquals (Dog dog) {} 
} 
+0

хорошо я получил его! Спасибо –

Смежные вопросы