Elenco TreeMap.submap Return: STORDMAP, Voltar para Treemap
Pergunta
Isso parece complicado demais para eu fazer isso corretamente.
eu tenho um TreeMap<Double, (user-defined)Object>
, do qual estou levando um metrô:
public static reqObj assignObj(reqObj vArg, int startDate, int endDate){
reqObj vOut=new reqObj();
if (keyAt(vArg.requestObject,startDate)>-1 && keyAt(vArg.requestObject,endDate)>-1){
System.err.println(keyAt(vArg.requestObject,startDate));
System.err.println(keyAt(vArg.requestObject,endDate));
//vOut.requestObject=(TreeMap<Double, dayObj>)
vArg.requestObject.subMap(
keyAt(vArg.requestObject,startDate),
keyAt(vArg.requestObject,endDate));
}
return vOut;
}
Isso funciona exatamente como o esperado, mas quando eu for lançado meu mapa classificado de volta para (TreeMap)
Estou tendo o erro a seguir:
java.lang.ClassCastException: java.util.TreeMap$SubMap
Qualquer ajuda seria ótimo.
Solução
O problema é exatamente o que o erro diz: o submarino retornado é não um padrão TreeMap
, é uma instância de uma classe interna definida por implementação. Se você olhar para a declaração de subMap
:
public SortedMap subMap(Object fromKey, Object toKey)
Tudo o que garante é que o objeto retornado implemente o SortedMap
Interface, então essa é a única coisa que você pode lançar com segurança.
Dito isto, não há razão para realmente lançar para um TreeMap
porque não fornece nenhuma funcionalidade adicional sobre o que um SortedMap
faz.