所以再一次,对不起,这个问题可能会得到很多回答/问题,但我不确定我在寻找什么
我目前正在为游戏制作模式,需要注册我创建的自定义项目。 我为每种类型的项目创建了自定义类,其中包含我需要访问的各种变量。问题是,它们都继承的类没有这些变量/数据。
我最初的尝试是这样的(伪代码' ish)
public void addItem(Item itemc)
{
Object item = null;
if (itemc.getClass().equals(ItemTool))
item = (ItemTool) itemc;
if (itemc.getClass().equals(ItemFood))
item = (ItemFood) itemc;
.......etc..........
registerItem(item,item.name);
registerItemRenderer(item,item.meta,item.model);
}
但是这并不起作用,我得到一个错误说项目(被视为初始化的对象)没有这些成员。
现在我只是重载方法addItem来接受我制作的每个自定义项目类(超过10个atm),但这不是我想要的。
有没有办法将Object的类型更改为我将作为参数传递的任何类,然后使用它?
答案 0 :(得分:0)
您可以将item.name
的提取移动到if
:
Object item = null;
Object itemName = null;
if (itemc.getClass().equals(ItemTool)) {
item = (ItemTool) itemc;
itemName = item.name;
} else {
if (itemc.getClass().equals(ItemFood)) {
item = (ItemFood) itemc;
itemName = item.name;
}
}
registerItem(item, itemName);
但要为Interface
创建一个Item
以包含getName
- 方法,每个Item
实现并且您的方法没有要知道您的项目获取名称的类型:
public void addItem(Item item) {
registerItem(item, item.getName());
}