Java - 自定义类ArrayList没有添加方法

时间:2013-04-23 03:38:16

标签: java

自定义类的ArrayList没有.add()方法:

我可以定义Object的ArrayList:

ArrayList<Object> thing = new ArrayList<Object>();


thing.add(otherThing); // works

但是,当我定义一个自定义类Thing的列表时:

ArrayList<Thing> thing = new ArrayList<Thing>();


thing.add(otherThing); // error


Canvas.java:33: cannot find symbol
symbol  : method add(java.lang.Object)
location: class java.util.ArrayList<Thing>
            thing.add(otherThing);
                   ^
1 error

这可能吗?

由于

3 个答案:

答案 0 :(得分:7)

您的otherThing必须属于Thing类型。目前它的类型为Object,这就是为什么它适用于第一种情况,但在第二种情况下失败了。

在第一种情况下,ArrayList<Object>采用Object类型的元素。由于otherThing属于Object类型,因此也可以。

在第二种情况下,ArrayList<Thing>采用Thing类型的元素。由于您的otherThing仍然属于Object类型,而它应该属于Thing类型,因此您会收到该错误。

答案 1 :(得分:0)

ArrayList<Thing> thing = new ArrayList<Thing>(); 

为此,您只能添加/ Thing实例的类型,但不允许这样做,因为它违反了Java Generic准则。

ArrayList<Object> thing = new ArrayList<Object>();  

因为你在这里指定了对象,而对象是超类它可以正常工作。

答案 2 :(得分:0)

otherThing未声明为Thing,而是Object