这对我来说似乎太棘手了。
我有TreeMap<Double, (user-defined)Object>
,其中我正在拍摄子图:
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;
}
这可以正常工作,但是当我将已排序的地图转换回(TreeMap)
时,我收到以下错误:
java.lang.ClassCastException: java.util.TreeMap$SubMap
任何帮助都会很棒。
答案 0 :(得分:3)
问题正是错误所说的:返回的子图不是标准TreeMap
,它是实现定义的内部类的实例。如果你看一下subMap
的声明:
public SortedMap subMap(Object fromKey, Object toKey)
所有它保证返回的对象实现SortedMap
接口,这是你唯一可以安全地转换为。
话虽如此,没有理由实际转换为TreeMap
,因为它没有提供SortedMap
所做的任何其他功能。