我必须将此声明 public void removeRange(int fromIndex,int toIndex)添加到我的ListType类。
此方法应删除索引范围为fromIndex(包含)和toIndex(不包括)的所有元素。列表中的所有successng元素都应该向列表的前面移动,以占据被删除元素留下的间隙。如果任一指定的索引无效,则此方法应该抛出IndexOfBoundException。
当我尝试使用Generic类型E来解析此方法中的变量时,我收到错误。 错误消息“E无法解析为变量”
My code
public void removeRange(int fromIndex, int toIndex)
{
if (fromIndex >= elements || fromIndex < 0 || toIndex >=elements || toIndex<0 || toIndex<=fromIndex)
throw new IndexOutOfBoundsException();
for( int i = fromIndex; i <toIndex; ++i)
E temp = remove(i);
// Return the element that was removed.
return;
}
我知道我不能声明一个泛型E对象,但我不知道怎么解决这个问题?
答案 0 :(得分:2)
尝试
public E removeRange<E>(int fromIndex, int toIndex)
{
if (fromIndex >= elements || fromIndex < 0 || toIndex >=elements || toIndex<0 || toIndex<=fromIndex)
throw new IndexOutOfBoundsException();
for( int i = fromIndex; i <toIndex; ++i)
E temp = remove(i);
// Return the element that was removed.
return temp;
}
答案 1 :(得分:0)
您的ListType
类应声明它采用泛型E
。所以你需要这样的东西:
public class ListType<E> extends ArrayList<E> {
public void removeRange(int fromIndex, int toIndex) {
// your remove logic here
...
// now you can use E here
E temp = remove(i);
return;
}
}
我猜你在这里扩展ArrayList
。无论哪种方式,它都是相同的概念。