1

これは、私がこれを正しく行うにはトリッキーすぎるようです。

があり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

どんな助けでも素晴らしいでしょう。

4

1 に答える 1

3

問題はまさにエラーの内容です。返されたサブマップは標準ではなくTreeMap、実装定義の内部クラスのインスタンスです。の宣言を見るとsubMap

public SortedMap subMap(Object fromKey, Object toKey)

保証されるのは、返されたオブジェクトがSortedMapインターフェイスを実装していることだけであるため、安全にキャストできるのはそれだけです。

そうは言っても、実際に a にキャストする理由はありTreeMapません。なぜなら、それは a が行うこと以上の追加機能を提供しないからSortedMapです。

于 2010-11-22T00:18:31.837 に答える