我想将一个泛型类型E解析为变量

时间:2011-04-17 23:16:44

标签: java arrays eclipse generics arraylist

我必须将此声明 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对象,但我不知道怎么解决这个问题?

2 个答案:

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