将对象添加到ArrayList

时间:2012-11-30 12:18:17

标签: java generics arraylist

我已经推出了一个Arraylist,我希望它是一个通用类型。

ArrayList<T> locker = new ArrayList<T>();

然后我有一个方法添加,它也需要是通用的。

public <T extends Gear> boolean add(Gear item)
{

    locker.add(item);// this is giving me compile error => no suitable method found for add(Gear)
    return true;
}

我该如何修复它,我也是通用类型的新手。

2 个答案:

答案 0 :(得分:5)

如果已经在类声明中,则无需重新声明方法中的泛型类型:

public class Locker<T extends Gear> {
    private List<T> locker = new ArrayList<T>();

    public boolean add(T item) {
        locker.add(item);
        return true;
    }
}

答案 1 :(得分:1)

您实际上定义了两种通用参数类型。你已经陷入了相信他们是相同的经典陷阱,因为他们有相同的名字。您的第一个通用参数(T)位于类级别,可以在其中使用,您的第二个参数(T extends Gear)仅适用于add方法的上下文中。

您可能应该将其类级别参数更改为T extends Gear,如其他人所指出的那样,并删除方法级别声明。