让我说我有:
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?
答案 0 :(得分:5)
List<myInterface>
。您还需要B
和C
的界面:
interface myinterface {
void doSomething();
}
B
和C
都必须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。