我受夠了一個錯誤,並陷入了一個問題,我猜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領域。
任何人都可以請幫我解決如何改變它使其工作?