2015-04-25 4 views
0

Я создал интерфейс карты, который имеет общую функцию entries().Java Невозможно реализовать функцию в интерфейсе Map ADT, который принимает класс Pair как его общий параметр

// return iterable collection of all the key-value entries in the map 
public ArrayList<Pair<KeyType, ValueType>> entries(); 

Проблема заключается в том, когда я пытаюсь реализовать интерфейс я получаю эту ошибку в файле интерфейса на entries() функции: Bound mismatch: The type KeyType is not a valid substitute for the bounded parameter <KeyType extends Comparable<KeyType>> of the type Pair<KeyType,ValueType>

Моя реализация функции показана ниже:

public ArrayList<Pair<KeyType, ValueType>> entries(){ 
    ArrayList<Pair<KeyType, ValueType>> list = new ArrayList<Pair<KeyType, ValueType>>(); 
    preorderList (root, list); 
    return list; 
} 

Как я могу решить эту проблему?

+0

, пожалуйста, разместите интерфейс карты, который вы определили –

ответ

0

Возможно, вы покинули общую границу объявления интерфейса. Поскольку ваш Pair требует, чтобы ключи были сопоставимы друг с другом (KeyType extends Comparable<KeyType>), ваш Map должен будет подтвердить эту ссылку в своей заявке KeyType, чтобы использовать Pair с ее KeyType. Возможно, вам понадобится связать ValueType, если Pair ограничивает его.

interface Map <KeyType extends Comparable<KeyType>, ValueType> { ... } 

Под шаблонного типа стирания Pair «s KeyType заменяется Comparable. Если вы не связали MapKeyType, он заменяется Object, который не может быть назначен Comparable без сужения, который может потенциально потерпеть неудачу.

+0

Большое вам спасибо! – engalsh

Смежные вопросы