Java 为什么android要将我的基类转换为it';当我把它作为额外的时,它是什么父类?
我有一个类可以帮助我节省时间,所以我不必总是写很长的类名:Java 为什么android要将我的基类转换为it';当我把它作为额外的时,它是什么父类?,java,android,serialization,Java,Android,Serialization,我有一个类可以帮助我节省时间,所以我不必总是写很长的类名: public class ImageBucket extends ArrayList<LoadableGeoLocationImage> implements Serializable{ private static final long serialVersionUID = -4275196266297013629L; public ImageBucket() {} public ImageBu
public class ImageBucket extends ArrayList<LoadableGeoLocationImage> implements Serializable{
private static final long serialVersionUID = -4275196266297013629L;
public ImageBucket() {}
public ImageBucket(Collection<? extends LoadableGeoLocationImage> collection) {
super(collection);
}
public ImageBucket(int capacity) {
super(capacity);
}
public ImageBucket(ImageBucket ... buckets){
super();
for(ImageBucket bucket: buckets){
this.addAll(bucket);
}
}
}
但当我试图获取数据时,我得到了一个ClassCastException:
Serializable seriImgBucket = this.getIntent().getExtras().getSerializable(INTENT_ARG_IMAGES);
System.err.println(seriImgBucket.getClass().getName()); //Prints: ....ArrayList
this.images = (ImageBucket) seriImgBucket;
为什么android会返回我的基类而不是我添加到附加类中的基类?我如何修复它?在我看来,通过这段代码
Serializable seriImgBucket = this.getIntent().getExtras().getSerializable(INTENT_ARG_IMAGES);
ImageBucket类已被强制转换为其超类,此过程不可逆。
所以,我建议你这样修改它
ImageBucket seriImgBucket = this.getIntent().getExtras().getSerializable(INTENT_ARG_IMAGES);
此外,它还可以帮助您保存一些代码!祝你好运 @Squonk。毫无意义的建议。将要发生的是ClassCastException。我是这样做的,在我得到ClassCastException之后,我更改了代码,就像现在在答案中一样,以打印实际的类名。
ImageBucket seriImgBucket = this.getIntent().getExtras().getSerializable(INTENT_ARG_IMAGES);