我扩展了 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)