Cast TreeMap.Submap返回:SortedMap,返回TreeMap

时间:2010-11-22 00:06:30

标签: java treemap sortedmap

这对我来说似乎太棘手了。

我有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

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:3)

问题正是错误所说的:返回的子图不是标准TreeMap,它是实现定义的内部类的实例。如果你看一下subMap的声明:

public SortedMap subMap(Object fromKey, Object toKey)

所有它保证返回的对象实现SortedMap接口,这是你唯一可以安全地转换为。

话虽如此,没有理由实际转换为TreeMap,因为它没有提供SortedMap所做的任何其他功能。