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



这是我在这里的第一个问题,所以如果有什么问题,请不要生我的气。

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

public class Item extends Node

好的,仍然一切都很好。但是我们也有类,我们称之为NodeFactory,它包含静态方法loadNodeAssets返回Node作为结果。

 public static Node loadNodeAssets (String path)

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

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

不起作用,因为返回类的类型是节点而不是项目。基本上我需要构造 Fish 类并在 Fish 类扩展的 Node 类中初始化继承字段。对不起我的英语。希望得到你的帮助。谢谢!

首先,您应该找出您实际返回的类:

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. 图书馆的设计是假的。在这种情况下,您可能应该寻找替代方案,或者 - 如果您有源代码 - 自己修复它。

相关内容

  • 没有找到相关文章

最新更新