Непроверенный актерский состав: есть ли способ избежать этого в этом случае? - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть ситуация, которая вызывает непроверенное предупреждение. Я знаю, что могу использовать предупреждения подавления, но мой инстинкт подсказывает мне, что есть способ избежать этого, изменив способ кодирования этого фрагмента. Я, однако, не могу, кажется, вывести решение на поверхность и могу сделать это свежим взглядом.

//function removes elements from input, orders them and re-adds them
private <E extends Bus> int orderBuses(ArrayList<E> busList) {

  Bus busToAdd = null;

  ...

  busList.add((E) busToAdd);

  return 0;
}

Функция вызывается с несколькими списками, каждый из которых содержит класс, расширяющий Bus. В busToAdd используются несколько функций, которые являются частью Bus, поэтому использование типа E не будет работать.

Любые предложения о том, как реструктурировать это без необходимости подавления предупреждений?

edit: Обнаружено, что я могу использовать E для busList, но в конечном итоге мне приходится разыгрывать назначенные ему шины, что приводит к тому же предупреждению. Я могу попробовать использовать E для всех применений вместо шины, я обновлю, когда я проверю это.

Ответы [ 2 ]

3 голосов
/ 05 сентября 2011

Почему бы не использовать E здесь не работает?

Вы говорите, что используете некоторые методы, которые являются частью Bus, но, начиная с E extends Bus, вы также сможете вызывать все Bus 'методы для E.

1 голос
/ 05 сентября 2011

Вы должны иметь возможность заменить ссылки на тип Bus на E в теле вашего метода. Тогда не было бы предупреждения.

Пример:

E busToAdd = busList.get(0);
// ...
busList.add(busToAdd);
...