Задать вопрос
rvller
@rvller

Реализация шаблонов Java?

Сделал так:
public class Trie<T> implements Map<String, T> {
    private class TrieEntry<S> implements Map.Entry<String, S> {
        // stupid implementation here
    }
    // uninterested code here
}



Всё ок.

Но при описании метода entrySet():
public Set<java.util.Map.Entry<String, T>> entrySet() {
    Set<java.util.Map.Entry<String, T>> x = new HashSet<TrieEntry<T>>();
    // some uninterested code here
}



Eclipse реагирует так:

«Type mismatch: cannot convert from HashSet<Trie.TrieEntry> to Set<Map.Entry<String,T>>»


Где я не прав?
  • Вопрос задан
  • 3018 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
@Artyushov
Если A extends B, это не значит, что Set extends SetМожно просто написать
Set<java.util.Map.Entry<String, T>> x = new HashSet<java.util.Map.Entry<String, T>>();
и класть туда свою реализацию.
Ответ написан
Комментировать
@sergei-grigorev
Попробуйте так
Set<? extends java.util.Map.Entry<String, T>> x = new HashSet<TrieEntry>();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы