【发布时间】:2008-12-30 20:31:39
【问题描述】:
大家好,
想知道是否有任何 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(),但并不热衷于添加额外的样板代码。
【问题讨论】:
-
你可以做到。看看我的编辑。我认为您首先在理解“铸造”时遇到了问题。
标签: java inheritance casting