这是我在这里的第一个问题,所以如果有什么问题,请不要生我的气。
问题是这样的:我们有类节点。它是类项的基类。所以基本上:
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
,那么只有两种可能性:
- 您误解了应该如何使用库。也许你认为你需要一个
Item
但你真的只需要一个Node
。 - 图书馆的设计是假的。在这种情况下,您可能应该寻找替代方案,或者 - 如果您有源代码 - 自己修复它。