2011-10-06 62 views
0

比方说,我有:爪哇 - 内部的内部类阵列外部类

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

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

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

如果我想让可能含有B和C这样一个ArrayList,我可以叫myArray.get(i).doSomething()内A,我想声明我的ArrayList是什么类型?

回答

1

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

+0

感谢您的解释。 – Wex

5

List<myInterface>。您还需要为BC接口:

interface myinterface { 
    void doSomething(); 
} 

而且两者BC必须implement myInterface

1

难道你要定义一个ArrayList为:

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

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