У меня есть этот интерфейс,Используя абстрактный класс, который реализует интерфейс (Java)
public interface IAnything {
void m1();
void m3();
}
И два абстрактных классов, реализующих этот интерфейс:
public abstract class AbstractThing1 implements IAnything {
public void m1() {}
public void m3() {}
}
public abstract class AbstractThing2 implements IAnything {
public void m1() {}
public void m3() {}
}
Где-то в моем коде я хочу, чтобы вызвать function doSomething(kindOfAbstractClass)
что выполняет m1()
и m3()
, среди других заданий в зависимости от видаOfAbstractClass.
Как определить и позвонить doSomething()
? Я сделал это, но он не работает. Благодаря
private <T extends IAnything> void doSomething(T kindOfAbstractClass) {
...
kindOfAbstractClass.m1();
kindOfAbstractClass.m3();
...
}
doSomething(AbstractThing1.class);
Неверный запрос 'doSomething'. Не передавайте «Класс», а экземпляр одного из ваших 2 классов. –
Но это эти классы абстрактные, у меня нет никаких экземпляров. – Arturo
Да, читайте @gheese ответ, вам нужен экземпляр, чтобы использовать 'doSomething'. Я предполагал, что у вас есть один в какой-то момент вашего кода. –