0

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

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

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 类中的继承字段。对不起我的英语不好。希望得到您的帮助。谢谢!

4

1 回答 1

2

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

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

如果结果是 aNode那么您获得 an 的唯一方法是Item手动构建它:

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

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

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