У меня есть ситуация, которая вызывает непроверенное предупреждение. Я знаю, что могу использовать предупреждения подавления, но мой инстинкт подсказывает мне, что есть способ избежать этого, изменив способ кодирования этого фрагмента. Я, однако, не могу, кажется, вывести решение на поверхность и могу сделать это свежим взглядом.
//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 для всех применений вместо шины, я обновлю, когда я проверю это.