2013-07-23 2 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

나는 당신의 정확함을 확신하지만 나는 hashMap에 익숙하지 않다. 나는 그 문제에 대해 내 자신의 수업을 만들 것이라고 생각했다. 너는 그들에 대해 더 많이 말해 줄 수 있니? – CodeManiak

+0

지도를 사용하면 키를 값에 연결할 수 있습니다. objectName을 키로 사용하기 때문에 List 유형 데이터 구조가 필요하지 않습니다. 당신은 단순히 map.put ("someName", myObject)과 map.get ("someName"); 기본 데이터 구조를 직접 구현하는 것은 연습에 좋지만 이미 언어로 구현되었습니다. – Kayaman

답변

4

찾고있는 것은 Generics입니다. 구문은

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

흥미 롭습니다. 나는 C++에 대한 더 많은 경험을 가지고 있으므로 이것을 "templating"이라고 배웠습니다. 이제 자바에서 템플릿을 만드는 방법을 알고 있습니다! 감사! – CodeManiak

+1

클래스는 OP의 생성자 * GameList (int size) *와 비슷한 새로운 T []를 어떻게 만들지? –

+1

한 가지 방법은 T로 입력하지 않고 대신 Object [] (이 방법으로 ArrayList가 수행하는 방법)입니다. 또 다른 방법은 리플렉션을 통해 배열을 생성하기 위해 전달 된 Class 객체를 사용하는 것입니다 (이것은 더 복잡합니다). – Kayaman

관련 문제