gpt4 book ai didi

数据成员上的 Java ClassCastException

转载 作者:行者123 更新时间:2023-11-30 03:09:11 25 4
gpt4 key购买 nike

我有以下内容:类 BaseModel 包含 BaseForm:

public class BaseModel {
BaseForm form;

public BaseForm getForm() { return form; }
public void setForm(BaseForm form) { this.form = form; }
}

MyModel 类扩展了 BaseModel; MyForm 类扩展了 BaseForm。也就是说,存在并行继承,

MyModel -> BaseModel

MyForm -> BaseForm

public class MyModel extends BaseModel { 
// ... 'form' (inner data member) is set to MyForm which extends BaseForm
}

下面给了我一个 ClassCaseException。我需要接收此特定模型中包含的特定表格:

MyForm myForm = (MyForm)specificModel.getForm();

java.lang.ClassCastException: BaseForm cannot be cast to MyForm

我知道我无法转换到特定类别,但我该怎么办?

最佳答案

如果您在MyModel中设置给成员form的对象实际上是一个MyForm(而不是BaseForm ),那么就不会抛出异常。请参阅下面的示例(我已经测试过代码):

public class MyModel extends BaseModel { 

// ... 'form' (inner data member) is set to MyForm which extends BaseForm
MyModel(MyForm mf) {
this.form = mf;
}

public static void main(String[] args) {
MyForm mf = new MyForm();
MyModel specificModel = new MyModel(mf);
MyForm myForm = (MyForm) specificModel.getForm(); // No exception now
}
}

public class BaseModel {
BaseForm form;

public BaseForm getForm() { return form; }
public void setForm(BaseForm form) { this.form = form; }
}

public class MyForm extends BaseForm {
}

public class BaseForm {
}

关于数据成员上的 Java ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33990364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com