2013-07-23 138 views
1

Arraylists使用以下語法:ArrayList<Object> = new ArrayList<Object>; 我需要添加一個構造函數到我的GameList類,允許您指定要創建的列表類型。我不明白如何讓能夠像這樣被定義我的課:如何在Java中創建對象的自定義列表?

GameList<objectType> = new GameList(); 

所有我在遊戲中的對象將被從遊戲對象類下降。

public class GameObject 
{ 
    String name; 
    public GameObject 
    { 
     name = "Stat"; 
    } 
    public String getName() 
    { 
     return name; 
    } 
    public void setName(String newName) 
    { 
     name = newName; 
    } 
} 

public class GameList 
{ 
    GameObject[] theList; 
    public GameList(int size) 
    { 
     theList = new GameObject[size]; 
    } 
    public GameObject parseList(String objectName) 
    { 
     for(int i = 0; i < theList.length; i++) 
      if(theList[i].getName() == objectName) 
       return theList[i]; 
     return null; 
    } 
} 
+2

您是否真的需要創建自己的自定義列表?它看起來更像是你想要一個HashMap,如果你要通過它的名字獲取對象。 – Kayaman

+0

我敢肯定你的正確,但我不熟悉哈希映射我只是覺得我會爲這個問題創建自己的類。你能告訴我更多關於他們嗎? – CodeManiak

+0

地圖允許您將鍵與值相關聯。由於您使用objectName作爲鍵,所以您不需要List類型的數據結構。你可以簡單地做map.put(「someName」,myObject)和map.get(「someName」);自己實現基本的數據結構對於實踐來說很好,但它們已經在語言中實現了。 – Kayaman

回答

4

你在找什麼是Generics。語法應該是

public class GameList<T> { 
    T[] theList; 
    ... 
+0

有趣。我有更多的C++經驗,所以我將其學習爲「模板化」。現在我知道如何在Java中模板!謝謝! – CodeManiak

+1

類將如何創建一個新的T [],類似於OP的構造函數* GameList(int size)*? –

+1

一種方法是不將它輸入爲T,而是將其作爲Object [](這是ArrayList的做法)。另一種方法是使用傳入的Class對象通過反射來創建數組(這更麻煩)。 – Kayaman

相關問題