大家好,
想知道是否有Java黑客可以告诉我为什么以下代码无法工作:
public class Parent {
public Parent copy() {
Parent aCopy = new Parent();
...
return aCopy;
}
}
public class ChildN extends Parent {
...
}
public class Driver {
public static void main(String[] args) {
ChildN orig = new ChildN();
...
ChildN copy = orig.getClass().cast(orig.copy());
}
}
代码在编译时没有问题,但在运行时决定抛出ClassCastException异常D=。
编辑:哇,回复真快。谢谢大家!看来我不能使用这种方法进行向下转型...在Java中还有其他方法可以进行向下转型吗?我想过让每个ChildN
类重写copy()
,但不喜欢添加额外的模板代码。