Я хочу разрешить универсальный тип E в переменную - PullRequest
1 голос
/ 18 апреля 2011

Мне нужно добавить это утверждение 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, но я не знаю, как обойти это?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

Попробуйте

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;
   }
0 голосов
/ 18 апреля 2011

Ваш 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 здесь.В любом случае это одна и та же концепция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...