Когда я пытаюсь скомпилировать это:Несовместимые типы - SortedSet и TreeSet
import java.util.*;
public class NameIndex
{
private SortedMap<String,SortedSet<Integer>> table;
public NameIndex()
{
this.table = new TreeMap<String,TreeSet<Integer>>();
}
}
я получаю:
Incompatible types - found java.util.TreeMap<java.lang.String,java.util.TreeSet<java.lang.Integer>> but expected java.util.String,java.util.SortedSet<java.lang.Integer>>
Любая идея, почему?
UPDATE: компилируется:
public class NameIndex
{
private SortedMap<String,TreeSet<Integer>> table;
public NameIndex()
{
this.table = new TreeMap<String,TreeSet<Integer>>();
}
}
возможно дубликат [Is 'Список' подкласс 'Список '? Почему не генерические роды Java неявно полиморфны?] (Http://stackoverflow.com/questions/2745265/is-listdog-a-subclass-of-listanimal-why-arent-javas-generics-implicit) –
assylias
Да - взятие Посмотрите на этот вопрос. Думаю, я согласен. Мое понимание состоит в том, что, читая этот вопрос, вы не можете иметь один общий интерфейс, а другой общий - как конкретный класс. Они должны быть одинаковыми. – Snowcrash