Java кастинг списка к своему интерфейсу
У меня есть:
class Hammer Implements Part {
public String getName() { return name; }
public int getId() { return id; }
...
}
class Wrench implements Part {
public String getName() { return name; }
public int getId() { return id; }
...
}
interface Part {
String getName();
int getId();
}
Я использую встроенный менеджер баз данных, написанный для Android SQLite, который возвращает список объектов, основанный на том, что я получаю:
dataManager().getWrenchDao().getAll(); // returns List<Wrench>
Я не могу изменить способ работы этой функции.
Теперь я получаю оба списка, как:
List<Wrench> wrenches = dataManager().getWrenchDao().getAll();
List<Hammer> hammers = dataManager().getHammerDao().getAll();
Однако я хочу заполнить блесны этими данными (блесны-это выпадающие списки в android).
loadSpinner(Spinner s, List<Part> data) {
...
data.ElementAt(i).getName();
data.ElementAt(i).getId();
...
}
loadSpinner(wrenchSpinner, wrenches);
Но это дает мне ошибку литья, что вы не можете изменить ключ на часть. Почему Java не позволяет я это сделаю? Гаечные ключи имеют все методы, которые делают части, так почему я не могу бросить его в то, что он реализует и использовать его?
Ошибка:
The method loadSpinner(Spinner, List<Part>) in the type NewActivity is not applicable for the arguments (Spinner, List<Wrench>)
1 ответ:
Вы должны заменить второй параметр
loadSpinner
на:loadSpinner(Spinner s, List<? extends Part> data)
Смотрите также: когда генераторы Java требуют расширяет T > вместо
и есть ли какой-либо недостаток переключения?
Comments