0

私が持っているとしましょう:

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

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

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

A の内部で呼び出すことができるような方法で B と C の両方を含むことができる ArrayList を作成したい場合myArray.get(i).doSomething()、どの型の ArrayList を宣言しますか?

4

3 に答える 3

5

List<myInterface>. Bおよびのインターフェースも必要ですC

interface myinterface {
    void doSomething();
}

BCmustの両方implement myInterface

于 2011-10-06T08:30:25.877 に答える
1

内部クラスはインターフェイスを実装する必要があります。そうしないと、コンパイラはすべてのクラスに doSomething() メソッドがあることを確認できず、許可されません。

于 2011-10-06T08:31:34.643 に答える
1

ArrayList を次のように定義しますか?

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

いいえ、まだできませんでした。また、メソッド doSomething を持つ T またはインターフェイス T という名前の親クラスを宣言する必要があり、クラス AB と AC は T を実装する必要があります。

于 2011-10-06T08:33:41.443 に答える