LINUX.ORG.RU

[Java] Generic

 


0

0

Столкнулся с такой проблемой. Есть класс:

public class CatalogGroup implements Serializable, Comparable, I18nAware {..

есть метод:

public static void setLanguageId(String languageId, List<I18nAware> objects) {...

есть код:

List<CatalogGroup> catalogGroups = catalogGroupDao.getAllCatalogGroups();

Я по глупости своей думал, что catalogGroups можно будет сразу передать методу setLanguageId, но это не так. Он не видит, что CatalogGroup реализовывает интерфейс I18nAware, и отказывается его принимать. Я понимаю, что это вроде как правильно, но с другой стороны — почему мне не разрашают явно преобразовать тип?

List<I18nAware> asd = (List<I18nAware>) catalogGroupDao.getAllCatalogGroups();

- ошибка inconvertible types.

Это при том, что из типа Object в CatalogGroup преобразуется нормально. Какие есть варианты, кроме как возвращать из catalogGroupDao List<I18nAware> ?

★★★★★

public static void setLanguageId(String languageId, List<E extends I18nAware> objects) {...

или я чего-то недопонял

ef37 ★★
()

>List<I18nAware> asd = (List<I18nAware>) catalogGroupDao.getAllCatalogGroups();

>- ошибка inconvertible types.

Как вариант преобразовать все элементы по одному. Иначе как то по другому реализовывать.

Lucky1 ★★★
()
Ответ на: комментарий от Score-49

Да, но мне это и не надо, мне надо вызвать метод интерфейса I18nAware, что я и сделал.

roy ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.