Java - Массив внутренних классов внутри внешнего класса - PullRequest
0 голосов
/ 06 октября 2011

Допустим, у меня есть:

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 ]

5 голосов
/ 06 октября 2011

List<myInterface>. Вам также понадобится интерфейс для B и C:

interface myinterface {
    void doSomething();
}

И B и C должны implement myInterface.

1 голос
/ 06 октября 2011

Вы хотите, чтобы определить ArrayList как:

ArrayList<T> al = new ArrayList<T>();
...
al.get(0).doSomething();

Нет, ты еще не мог. Вам также нужно объявить родительский класс с именем T или интерфейс T, который имеет метод doSomething, а ваши классы A.B и A.C должны реализовать T.

1 голос
/ 06 октября 2011

Ваши внутренние классы должны реализовывать интерфейс;в противном случае компилятор не может быть уверен, что все классы имеют методы doSomething (), и не допустит этого.

...