我试图使用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)“
答案 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
。