在泛型类中使用ArrayList实现集合

时间:2013-12-27 17:41:14

标签: java generics arraylist set

我试图使用arrayList实现一个集合,我想制作2个构造函数。一个空的,一个得到一个数组并添加它:

        public class set<E> {
        Set <E> setList;
        ArrayList<E> elementList;

        public set(){

            setList = (Set<E>) new ArrayList();
        }

        public <E> set(E[] inputArray){
            super();
            for(E element: inputArray) // not working
                setList.add( element);
            // setList.addAll(Arrays.asList(inputArray)); - not working either
        }

我在第二个构造函数中遇到错误:

  

“类型集中的方法add(E)不适用于参数   (E)“

2 个答案:

答案 0 :(得分:1)

您需要删除构造函数声明中的<E>

    public <E> set(E[] inputArray){
           ^^^ Get rid of this

根据情况,您正在创建第二个不相关的通用类型参数E,该参数会隐藏E中的set<E>

答案 1 :(得分:0)

将方法set(E[])更改为:

public Set(E[] inputArray) {
    super();
    for(E element: inputArray) {
        setList.add(element);
    }
}

原因:

  

类型E已经是使用Set<E>创建的泛型类型,因此,您无需在构造函数中重新定义E