你可以使用接口作为ArrayList的类型吗?

时间:2014-02-21 02:20:25

标签: java

界面

public interface Inter
{
}

是否可以完成此操作,因为我放置在ArrayList中的对象不共享相同的父类,但它们都共享相同的接口。

在我的主要方法中

List<Inter> inventory = new ArrayList<Inter>();

4 个答案:

答案 0 :(得分:2)

是的,这是可能的。下次认真地试试吧。

此方法通常对您要执行的操作非常有用:存储共享公共接口的对象

答案 1 :(得分:2)

这绝对是可行的,它可以让您在同一Inter中混合List的不同实现:

public class InterImplOne implements Inter {
    ...
}
public class InterImplTwo implements Inter {
    ...
}    ...
List<Inter> inventory = new ArrayList<Inter>();
inventory.add(new InterImplOne());
inventory.add(new InterImplTwo());

当您想要编程到需要具有不同实现的多个项目的接口时,这非常有用。

答案 2 :(得分:0)

总之,是的。查看arraylist here的文档。当你想要一个arraylist时,这种方法很有效,当你遍历它时,所有对象都有类似的属性。

正如其他人所说,尝试这是一件好事。试验是一种很好的学习方法。

答案 3 :(得分:0)

是的,您可以使用匿名内部类来实例化该列表的组件,如下所示:

package test.regex;

import java.util.ArrayList;

public class TestM {


    interface C{
        public void print(int i ); 
    }

    public TestM() {

        ArrayList<C> list = new ArrayList<TestM.C>();

        for(int i=0; i< 10; i++ ){
            final  int aa = i;
            list.add(new C() {
                public void print(int  a) {
                    System.out.println(Integer.toString(aa + a).toUpperCase()); 
                }
            }); 
        }

        for(C c : list){
            c.print(12); 
        }
    }


    public static void main(String[] args){
        new TestM(); 
    }

}