2

我扩展了 hashmap(比如 MyClass):

public class MyClass extends HashMap<String, String>
 {
   // something
 }

现在,在一个活动中,我将此类的对象添加到附加对象中(我可以这样做,因为 HashMap 是可序列化的):

活动一:

  MyClass myClass=new MyClass();
  ...
  Intent i = getIntent();
            i.putExtra("key", myClass);
            setResult(RESULT_OK, i);
            finish();

在活动 B 中(在 onActivityResult 中),我取回了值:

  Object o=data.getSerializableExtra("key");

我的问题是o不是MyClass,而是HashMap。我希望它是 MyClass,但每当我认为 o 是 MyClass 的实例时,我都会得到 ClassCastException:

  MyClass o=(MyClass) data.getSerializableExtra("key");

为什么它返回超类实例?

堆:

07-06 18:32:58.539: E/AndroidRuntime(25268): Caused by: java.lang.ClassCastException: java.util.HashMap
07-06 18:32:58.539: E/AndroidRuntime(25268):    at ...Search.onActivityResult(Search.java:158)
07-06 18:32:58.539: E/AndroidRuntime(25268):    at android.app.Activity.dispatchActivityResult(Activity.java:3890)
07-06 18:32:58.539: E/AndroidRuntime(25268):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3511)
4

0 回答 0