Java - 外类内部类的数组

时间:2011-10-06 08:28:06

标签: java polymorphism inner-classes outer-classes

让我说我有:

public class A {
  public A() {
    ...
  }
  ...

  public class B {
    public B() {
      ...
    }
    public void doSomething() {
      ...
    }
    ...
  }

  public class C {
    public C() {
      ...
    }
    public void doSomething() {
      ...
    }
    ...
  }
}

如果我想创建一个可以同时包含B和C的ArrayList,我可以在A中调用myArray.get(i).doSomething(),我想要什么类型来声明我的ArrayList?

3 个答案:

答案 0 :(得分:5)

List<myInterface>。您还需要BC的界面:

interface myinterface {
    void doSomething();
}

BC都必须implement myInterface

答案 1 :(得分:1)

你的内部类必须实现一个接口;否则编译器无法确定所有类都有doSomething()方法,并且不允许它。

答案 2 :(得分:1)

您是否希望将ArrayList定义为:

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

不,你还不能。您还需要声明一个名为T的父类或具有方法doSomething的接口T,并且您的类A.B和A.C需要实现T。