在Java中通过基类工厂初始化扩展类
这是我在这里的第一个问题,所以如果出了什么问题,请不要生我的气 问题是: 我们有班级节点。它是类项的基类。所以基本上:在Java中通过基类工厂初始化扩展类,java,oop,factory,extending-classes,Java,Oop,Factory,Extending Classes,这是我在这里的第一个问题,所以如果出了什么问题,请不要生我的气 问题是: 我们有班级节点。它是类项的基类。所以基本上: public class Item extends Node 好的,一切都很好。但我们也有一个类,我们称之为NodeFactory,它包含静态方法loadnodeasets,结果返回Node public static Node loadNodeAssets (String path) 在我使用的库中,它是初始化节点类并将资源加载到其中的唯一方法。但主要问题是我需要获取I
public class Item extends Node
好的,一切都很好。但我们也有一个类,我们称之为NodeFactory,它包含静态方法loadnodeasets,结果返回Node
public static Node loadNodeAssets (String path)
在我使用的库中,它是初始化节点类并将资源加载到其中的唯一方法。但主要问题是我需要获取Item类实例,而不是节点。我怎样才能做到呢
Item f = (Item)NodeFacory.loadNodeAssets ("...")
由于返回类具有类型节点但不具有项,因此不工作。
基本上,我需要构造Fish类并初始化Fish类扩展的节点类中的继承字段。
对不起我的英语。希望你的帮助。谢谢大家! 首先,你应该弄清楚你到底要上哪门课:
Node n = NodeFacory.loadNodeAssets ("...")
System.out.println(n.getClass());
如果它原来是一个节点
,那么获取项
的唯一方法就是手动构造它:
Node n = NodeFacory.loadNodeAssets ("...")
Item i = new Item();
i.setAAA(n.getAAA());
i.setBBB(n.getBBB());
如果库根本不允许您构造项
s,那么只有两种可能性:
项
,但实际上您只需要一个节点
好吧,仅仅因为
项扩展节点
,并不意味着所有节点
都是项
(尽管情况正好相反),所以您无法将节点
自动强制转换为项
(它可能是与项
完全不相似的任何其他对象),您可能需要手动或借助属性映射库复制所需的字段(属性)