[英]change type of Object depending on method argument
因此,再次抱歉,這個詢問者已經准備好了很多,但我不確定我要尋找的是什么
我目前正在為游戲制作模組,需要注冊我創建的自定義物品。 我為每種類型的項目創建了自定義類,其中包含需要訪問的各種變量。 問題是,它們都從中繼承的類沒有這些變量/數據。
我最初的嘗試是這樣的(偽代碼“ 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的類型更改為我將作為參數傳遞然后使用的任何類?
您可以將item.name
的提取內容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);
但是為Item
創建一個包含getName
方法的Item
Interface
更像面向對象,每個Item
實現一個getName
方法,並且您的方法不必知道您的項目將使用哪種類型來獲取名稱:
public void addItem(Item item) {
registerItem(item, item.getName());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.