У меня есть несколько классов, которые реализуют некоторый интерфейс. Теперь я хочу создать новый класс, который может расширить один из них, на основе расчета времени выполнения, используя методы интерфейсов. Давайте поговорим в коде:Java расширяет общий прототип
public interface Interface {
public void doSomething();
}
public class A implements Interface {
@Override
public void doSomething() {
System.out.println("hello");
}
}
public class B implements Interface {
@Override
public void doSomething() {
System.out.println("hi");
}
}
Это существующие классы, так что теперь мне нужно сделать что-то вроде этого (который не работает, конечно):
public class C<T extends Interface> extends T {
public void doSomethingElse() {
this.doSomething();
}
public static void main(String[] args) {
C c;
if(isSomethingLoaded) {
c = new C<A>();
} else {
c = new C<B>();
}
c.doSomethingElse();
}
}
возможно ли это как-то, кроме пути что я передаю аргумент Interface other в конструктор C и сохраняю свойство класса.?
Извините, я кое-что забыл. Если мне нужно использовать метод doSomething() в основном, я должен явно реализовать его, правильно? Или есть другой путь? E: другими словами, если я хочу, чтобы C реализовал такой же интерфейс – tcigler
@tcigler Да, у вас есть либо реализовать/wrap doSomething(), либо предоставить getter для foo. – Puce