根据方法参数更改Object的类型

时间:2016-04-09 20:53:02

标签: java object types forge

所以再一次,对不起,这个问题可能会得到很多回答/问题,但我不确定我在寻找什么

我目前正在为游戏制作模式,需要注册我创建的自定义项目。 我为每种类型的项目创建了自定义类,其中包含我需要访问的各种变量。问题是,它们都继承的类没有这些变量/数据。

我最初的尝试是这样的(伪代码' 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的类型更改为我将作为参数传递的任何类,然后使用它?

1 个答案:

答案 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());
}