gpt4 book ai didi

java - Java中通过基类工厂初始化扩展类

转载 作者:行者123 更新时间:2023-12-02 05:07:04 26 4
gpt4 key购买 nike

这是我的第一个问题,如果有问题请不要生我的气。

问题是这样的:我们有节点类。它是 Item 类的基类。所以基本上:

public class Item extends Node

好吧,一切都还好。但是我们还有类 NodeFactory,其中包含返回 Node 作为结果的静态方法 loadNodeAssets。

 public static Node loadNodeAssets (String path)

在我使用的库中,它是初始化 Node 类并将资源加载到其中的唯一方法。但主要问题是我需要获取 Item 类实例而不是 Node。我怎样才能实现它?

 Item f = (Item)NodeFacory.loadNodeAssets ("...")

由于返回类的类型为 Node 而不是 Item,因此无法正常工作。基本上我需要构造 Fish 类并初始化 Fish 类扩展的 Node 类中的继承字段。对不起我的英语不好。希望得到您的帮助。谢谢!

最佳答案

首先你应该找出你实际上要返回的类(class):

Node n = NodeFacory.loadNodeAssets ("...")
System.out.println(n.getClass());

如果它是一个Node,那么获取Item的唯一方法就是手动构造它:

Node n = NodeFacory.loadNodeAssets ("...")
Item i = new Item();
i.setAAA(n.getAAA());
i.setBBB(n.getBBB());

如果库根本不允许您构造 Item,那么只有两种可能性:

  1. 您误解了如何使用该库。也许您认为您需要一个Item,但实际上您只需要一个Node
  2. 图书馆的设计是假的。在这种情况下,您可能应该寻找替代方案,或者 - 如果您有源代码 - 自己修复它。

关于java - Java中通过基类工厂初始化扩展类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27696522/

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