2015-12-05 2 views
0

у меня есть статический метод с заголовком:Метод сортировки (Map <Integer, Object>) не применяется для аргументов (Map <Integer, Entity>)

public static Map<Integer, Object> sort(Map<Integer, Object> inputMap) { 

и я пытаюсь вызвать его с помощью:

MapUtil.sort(entities); 

Это когда лица устанавливается в:

private Map<Integer, Entity> entities = new HashMap<Integer, Entity>(); 

я получаю эту ошибку:

The method sort(Map) in the type MapUtil is not applicable for the arguments (Map)

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

ответ

1

Вы правы, что Entity расширяет Object, но Map<Integer, Entity> не распространяется Map<Integer, Object> из-за тем, как дженериков работает. Если это разрешено, вы можете добавить объект к карте, которая сопоставляется с объектами.

Вот справка из Java Обучение Oracle в:

enter image description here

Делая метод сортировки родовое:

public static Map<Integer, Object> sort(Map<Integer, Object> inputMap) { 

Изменяя его к этому:

public static <T> Map<Integer, T> sort(Map<Integer, T> inputMap) { 

Тогда компилятор позволит использовать любой класс вместо T.

0

Изменить

public static Map<Integer, Object> sort(Map<Integer, Object> inputMap) 

в

public static <T> Map<Integer, T> sort(Map<Integer, T> inputMap) 
Смежные вопросы