如何将实例Object的元素添加到arraylist?

时间:2015-04-02 06:35:54

标签: java arraylist

我有两个这样的arraylists:

ArrayList<Book> books=new ArrayList<Book>();
ArrayList<Painting> paintings=new ArrayList<Painting>();

书籍和绘画是课程。我想像这样定义一个函数addToList:

public void addToList(Object myObject)
    {
        if(myObject instanceof Book)
                 books.add(myObject);

        else if(myObject instanceof Painting)
                 paintings.add(myObject);
    }

但它显示了一个错误 方法ArrayList中的add(Painting)方法不适用于参数(Object)

ArrayList类型中的add(Book)方法不适用于参数(Object)

有没有办法解决这个问题?为什么错误发生,因为我将每个add语句放在if else循环中,确认相应类的对象应该添加到相应的arraylist中?

我可以通过将add函数拆分为两个不同的add函数来完成此操作,其中一个作为参数绘制myObject,另一个作为Book myObject,但我想在同一个函数中完成所有操作。可以吗?

2 个答案:

答案 0 :(得分:4)

您需要先将对象强制转换paintings.add((Painting)myObject);,通用ArrayList<Painting>禁止您添加它,因为它需要继承类Paint并且抛出编译器错误,因为generell类对象不满足此条件

答案 1 :(得分:2)

由于您使用的是泛型,因此您不能这样做,您需要将其强制转换:

    if(myObject instanceof Book)
         books.add((Book)myObject);

    else if(myObject instanceof Painting)
         paintings.add((Painting)myObject);