我在这个结构中有两个实体:
class Parent{
public int type;
//Setters and getters
}
class Child1 extends Parent{
}
我有一个Parent
的实例,我希望以这种方式根据条件将其转换为Child1
:
Parent parent = ...
if(parent.getType() == 1)
Child1 child = (Child1) parent;
但它给了我ClassCastException
。我该如何解决这个问题?什么是在java中使用向下转换的最佳方法?
答案 0 :(得分:2)
您无法将父类型对象强制转换为子类型对象。你有误解了继承行为。
答案 1 :(得分:1)
只有当的对象属于该类型的对象时,才可以转换为子类。
对象的强制转换不会更改对象类的对象。它只是告诉编译器“这个对象实际上是子类的一个实例,使用它就是这样”。 (基本类型的转换是不同的,它们实际上改变了值的类型!)
在您的代码示例中,您没有显示parent
对象是如何创建的,因此我不知道这是否真的是问题所在。也许你可以添加遗漏的代码来清楚说明。
答案 2 :(得分:0)
你可以将动物类投射到狗类吗?即使你知道还有更多动物的例子。 它只是狗是一种动物,这就是为什么你可以把它投入动物但狗不是动物。
答案 3 :(得分:0)
您需要使用:
Parent parent = new Child1();
答案 4 :(得分:0)
你没有正确创建对象,像这样创建对象 父子=新Child1();