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>)
434   1  

1 ответ:

Вы должны заменить второй параметр loadSpinner на:

loadSpinner(Spinner s, List<? extends Part> data)

Смотрите также: когда генераторы Java требуют расширяет T > вместо и есть ли какой-либо недостаток переключения?

Comments

    Ничего не найдено.