我必须将此语句public void removeRange(int fromIndex,int toIndex)添加到我的ListType类。

此方法应删除索引范围为fromIndex(包括)和toIndex(不包括)的所有元素。列表中的所有后续元素都应移至列表的前面,以占据已删除元素留下的空白。如果指定的索引之一无效,则此方法应抛出IndexOfBoundException。

当我尝试使用通用类型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对象,但是我不知道如何解决这个问题?

最佳答案

您的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。无论哪种方式,都是相同的概念。

09-05 12:24