Java - 将对象的ArrayList传递给使用对象实现的接口的ArrayList的函数

时间:2015-02-23 17:28:10

标签: java arraylist parameters interface

我有一些实现接口的对象ArrayList,我想将它们传递给处理接口的函数。

问题是我无法将对象的ArrayList传递给接受接口的ArrayList的函数

编辑:使用该对象的ArrayList的函数将无法接受该接口的ArrayList。这可以在不创建两个列表的情况下完成吗?

编辑:标记为重复的问题。我理解这个问题但是上一个问题没有说明是否有将对象列表传递给接口列表的解决方案。

我的问题的简化版本

    //Interface
public interface SomethingInterface{
    abstract void doesntmatter();
}
//Object
public class SomethingObject implements SomethingInterface{
    public void doesntmatter(){}
}
//Second Object
public class SomethingObject2 implements SomethingInterface{
    public void doesntmatter(){}
}
//Function that wants to be able to accept all objects that implement the interface
public void PassToInterface(ArrayList<SomethingInterface> list){
    for(SomethingInterface i : list){
        i.doesntmatter();
    }
}
//Function that uses list of one of the objects
public void PassToObject(ArrayList<SomethingObject> list){
    //Do something
}

public static void main(String args[]){
    ArrayList<SomethingObject> somethings = new ArrayList();
    ArrayList<SomethingObject2> somethings2 = new ArrayList();

    //Unable to pass ArrayLists of the objects that implement the interface
    PassTo(somethings);
    PassTo(somethings2);
}   

1 个答案:

答案 0 :(得分:0)

您的PassTo方法接收ArrayList<SomethingInterface>作为参数。

您需要指定 somethings somethings2 才能接受SomethingInterface,但您仍然可以添加对象SomethingObject和{{1}在它里面。

SomethingObject2