Я создаю реализацию таблицы частот, в которой элементы таблицы хэш-карт представляют собой связанные наборы деревьев. Класс пары ключ/значение предоставляется с определением класса следующим образом:
public class CountablePair<F, S extends Comparable<? super S>> implements Comparable<S> {
Я хочу создать новый класс EntryTreeSet, который реализует Map.Entry и включает в себя набор деревьев CountablePairs. Мой текущий код для объявления класса, его переменной набора деревьев и его конструктора выглядит следующим образом:
public class EntryTreeSet<F,S> implements Map.Entry<F,S> {
private TreeSet<CountablePair<F,S>> tree;
public EntryTreeSet() {
this.tree = new TreeSet<CountablePair<F,S>>();
}
Однако это приводит к следующим сообщениям об ошибках:
EntryTreeSet.java:19: ошибка: аргумент типа S#1 не находится в границах переменной типа S#2 private TreeSet> tree; ^ где S#1,S#2 — переменные типа: S#1 extends Object, объявленный в классе EntryTreeSet S#2 extends Comparable, объявленный в классе CountablePair EntryTreeSet.java:22: ошибка: аргумент типа S#1 не находится в границах переменная типа S#2 this.tree = new TreeSet>(); ^ где S#1,S#2 — переменные типа: S#1 extends Object, объявленный в классе EntryTreeSet S#2 extends Comparable, объявленный в классе CountablePair
Мне было интересно, как мне правильно сделать так, чтобы мой набор деревьев содержал экземпляры класса CountablePair.
TreeSet<CountablePair>
обрабатываетCountablePair
как необработанный тип. Вы должны указать его параметры в объявлении. - person RealSkeptic   schedule 24.10.2015TreeSetEntry
; имяEntryTreeSet
наводит на мысль, что это TreeSet of Entries. - person Tassos Bassoukos   schedule 24.10.2015class EntryTreeSet<F,S extends Comparable<? super S>> implements Map.Entry<F,S>
как объявление второго класса. - person Nagy Vilmos   schedule 24.10.2015