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.

Другие вопросы по тегам