我必须使用泛型为java赋值实现我自己的ArrayList
类。出于某种原因,我遇到了不兼容的类型错误,而我在其他地方寻求帮助时失败了。
这是我的代码后面跟着确切的错误:
public <E> boolean addItem ( E item )
{
if ( numElements == list.length ) {
enlarge();
list [numElements] = item;
numElements ++;
return true;
} else {
list [numElements] = item;
numElements ++;
return true;
}
}
错误:
ArrayList.java:91: error: incompatible types
list [numElements] = item;
^(points at item)
required: E#2
found: E#1
where E#1,E#2 are type-variables:
E#1 extends Object declared in method <E#1>addItem(E#1)
E#2 extends hasKey declared in class ArrayList
如果在其他地方已经回答我道歉,我只是不确定我应该寻找什么来找到我需要的答案。
答案 0 :(得分:4)
根据您的错误,您有两个名为E的类型变量,一个在类级别,另一个在方法addItem
中。您只需从addItem
方法中删除type参数。
更改
public <E> boolean addItem (E item)
到
public boolean addItem (E item)
这同样适用于具有表示ArrayList
成员类型的泛型类型参数的类的任何其他非静态方法。它们都应该使用类级别中声明的泛型类型参数。