对于我来说,这似乎太棘手了,我无法正确地做到这一点。
我有一个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任何帮助都是最好的。
发布于 2010-11-22 08:18:32
问题就是这个错误所说的:返回子映射是a标准TreeMap,它是一个实现定义的内部类的实例。如果你看一下subMap的声明
public SortedMap subMap(Object fromKey, Object toKey)它所保证的就是返回的对象实现了SortedMap接口,所以这是您唯一可以安全地转换到的对象。
也就是说,实际上没有理由强制转换为TreeMap,因为它并没有提供比SortedMap所做的任何额外的功能。
https://stackoverflow.com/questions/4241196
复制相似问题