2017-02-07 3 views
-2

Это может быть очень глупый вопрос, у меня есть Java код, который выглядит следующим образом:Список классов <Map> не могут быть преобразованы в коллекции <objects>

public Collection<Object> getCollection(){ 
    List<Map<String,Object> listMap = getListMap(); 
    return listMap; 
} 

я получаю исключение, говоря

cannot assign a value of Java.util.list<java.util.map<java.lang.String,java.lang.Object>> 
to java.util.Collection<java.lang.Object> 

Конечно, ошибка должна быть действительной, но почему? И как я могу это преодолеть?

+3

Символ '' Коллекция может иметь любой 'Object' положить в нее. «Список » могут содержать только карты. Вы можете заставить его скомпилировать, просто отбросив дженерики, но это действительно зависит от того, что вы пытаетесь сделать. – khelwood

+2

взгляните на [этот] (http://stackoverflow.com/q/2745265/2764279) вопрос. –

+2

Общие типы Java не следуют правилам наследования – cybersoft

ответ

0

изменить метод подписи Collection<Map<String,Object>>

public Collection<Map<String,Object>> getCollection(){ 
    List<Map<String,Object>> listMap = getListMap(); 
    return listMap; 
} 
0

При использовании дженериков, избегать использования ссылок на Object. Вместо этого используйте wild card ? Например, в вашем случае измените Collection<Object> на Collection<?>.

Таким образом, ваш метод становится,

public Collection<?> getCollection(){ 
    List<Map<String,Object>> listMap = getListMap(); 
    return listMap; 
} 

Надеется, что это помогает!

0

Этот материал будет полезен для понимания дженериков Наследование: Java Documentation . Попробуйте это (он должен работать нормально):

public Collection<Object> getCollection() { 
    return new ArrayList<>(getListMap()); 
} 
Смежные вопросы