Методы Java, ожидающие параметры с множественным наследованием - PullRequest
3 голосов
/ 15 марта 2011

Я не знаю, почему я не могу найти ответ на этот вопрос онлайн.

У меня есть классы, которые реализуют несколько методов, и я хотел бы написать методы, чтобы ожидать их. Я не знаю, как это сделать, или если это вообще возможно.

например:

public void yellAtPet(<? extends Pet implements YellableAt> arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}

Ответы [ 2 ]

7 голосов
/ 15 марта 2011

Extends используется как для интерфейсов, так и для родительских классов.

Если вы хотите указать несколько расширений, вам нужно что-то вроде:

<T extends ClassA & InterfaceB>

Чтобы применить это к методу, сгенерируйте класс:

public class MyClass<T extends something & somethingelse>{
    public void doSomething(T arg)
    {
         //call methods defined by either interface
    }
}
5 голосов
/ 15 марта 2011

Это должно хорошо работать как универсальный метод, не делая весь ваш класс универсальным:

public <T extends Pet & YellableAt> void yellAtPet(T arg) {
    arg.yellAt("Don't go there!"); 
    arg.pet("Good Boy");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...