我受够了一个错误,并陷入了一个问题,我猜Java在Java中是向下转换的。下面的代码:Java downcasting ClassCastException错误
public class ComItem {
private String someValue1;
private String someValue2;
public void copy(ComItem temp) {
this.someValue = temp.someValue1;
this.someValue2 = temp.someValue2;
}
... getters & setters & etc omitted
}
public class ItemA extends ComItem {
private ThingA thingA;
@Override
public void copy(ComItem temp) {
super.copy(temp);
this.thingA = ((ItemA) temp).thingA; // <- **ERROR**
}
... getters & setters & etc omitted
}
程序抛出ClassCastException异常,当我尝试使用意达的副本(..)在这里:
if (form.getTempObject() instanceof ComItem) {
...
ComItem temp = (ComItem) form.getTempObject();
ComItem itemToEdit = (ComItem) form.getCurrentEditedObject(); // currentEditedObject is ItemA class
itemToEdit.copy(temp);
...
}
有很多类,比如意达相似的结构,每个都有自己的Thingx领域。
任何人都可以请帮我解决如何改变它使其工作?