gpt4 book ai didi

java - 对象工厂中的类型不匹配

转载 作者:行者123 更新时间:2023-12-04 06:11:54 25 4
gpt4 key购买 nike

我正在使用一个非常简单的工厂类来创建初始化我的一些对象:

   public class MyFactory {
public static Superclass createObject(String type) {
Superclass myObject = null;
if (type.equals("type1")) {
myObject = new Subclass();
myObject.setParam("val1");
}
return myObject;
}
}

没那么复杂:-) 没有通用代码等,只有这样。尽管如此,如果我以这种方式使用我的工厂,我会在 Eclipse 中遇到类型不匹配错误:
Subclass myObj = MyFactory.createObject("type1");

错误说它不能从父类(super class)转换为子类,但我看的任何地方(Heads First Design Patterns 等)我都可以这样看:作为类型返回创建的子类的父类(super class)......那么为什么我会收到这个错误: -)?谢谢!

最佳答案

The error says that it cannot convert from Superclass to Subclass



这是正确的。这与您不能存储 Number 的原因相同在 Integer例如( Number 实际上可能是 Double !)

如果你知道 SubclassProbeFactory.createProbe("type1") 返回然后你可以像这样转换它:
Subclass myObj = (Subclass) ProbeFactory.createProbe("type1");

如果可能,应避免向下类型转换。要么你设计它,以便你可以做
Superclass myObj = ProbeFactory.createProbe("type1");

或者您可以尝试创建工厂的类型安全版本:
Subclass myObj = ProbeFactory.createSubProbe("type1");

关于java - 对象工厂中的类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684594/

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