Java - Массив внутренних классов внутри внешнего класса
Допустим, у меня есть:
public class A {
public A() {
...
}
...
public class B {
public B() {
...
}
public void doSomething() {
...
}
...
}
public class C {
public C() {
...
}
public void doSomething() {
...
}
...
}
}
Если бы я хотел создать ArrayList, который мог бы содержать B и C таким образом, чтобы я мог вызвать myArray.get(i).doSomething()
внутри A, какой тип я хотел бы объявить мой ArrayList?
3 ответа
Решение
Ваши внутренние классы должны реализовывать интерфейс; в противном случае компилятор не может быть уверен, что все классы имеют методы doSomething() и не допустят этого.
List<myInterface>
, Вам также понадобится интерфейс для B
а также C
:
interface myinterface {
void doSomething();
}
И оба B
а также C
должен implement myInterface
,
Вы хотите, чтобы определить ArrayList как:
ArrayList<T> al = new ArrayList<T>();
...
al.get(0).doSomething();
Нет, ты еще не мог. Вам также нужно объявить родительский класс с именем T или интерфейс T, который имеет метод doSomething, а ваш класс AB и AC должны реализовать T.