2012-02-10 4 views
3

Je ne pense pas avoir la terminologie correcte, je n'ai pas été un pour ça. Ce que j'essaye de faire est de récupérer une chaîne, puis l'utiliser pour exécuter des fonctions. .. Exemple:Passer une chaîne comme référence en Java?

int slotNumber = ((j*3)+i+1); 
String slotString = "slot"+slotNumber; 

Régulièrement je peux faire ceci:

slot12.Draw(); 

Et je veux être en mesure de le faire:

slotString.Draw(); 

Avec elle substituant slotString avec slot12 dans une dynamique scénario. Si je dois vraiment que je pouvais faire quelque chose de similaire à:

if (slotString == slot1) slot1.Draw(); 
if (slotString == slot2) slot2.Draw(); 

Et tel, mais je ne veux pas vraiment utiliser x nombre de lignes pour un nombre x de machines à sous.

Toute aide est appréciée: D

+5

Est-ce qu'un travail 'carte '? –

Répondre

5

Une solution possible serait d'utiliser un HashMap où la clé est le slotNumber et la valeur pointe vers le slot. Ensuite, vous pourriez faire quelque chose comme ce qui suit.

//Initialize at the start of your program 
HashMap<int, Slot> SlotHash = new HashMap<int, Slot>(); 

//Code to retrieve slot and call Draw(). 
Slot select = SlotHash.get(slotNumber); 
select.Draw(); 
4

Peut-être utiliser une carte si vos emplacements sont peu emballés. Si elles sont compactes, vous pouvez utiliser un tableau d'emplacements. Dans les deux cas, vous effectuez la recherche de logement basée sur l'index, puis appelez Draw sur l'emplacement recherché.

0

Vous auriez quelque chose comme ceci:

Slot slot1 = new Slot("slot1"); 
Slot slot2 = new Slot("slot2"); 
SlotController controller = new SlotController(); 
controller.add(slot1);controller.add(slot2); 

String someSlotNumber = "....."; 
controller.draw(someSlotNumber); 

Voir la définition des classes ci-dessous:

class SlotController { 
    Map<String, Slot> slotMap = new HashMap<String, Slot>(); 
    public void addSlot(Slot aSlot) { 
     slotMap.put(aSlot.getSlotName(), aSlot); 
    } 

    public void draw(String slotName) { 
     slotMap.get(slotName).draw(); 
    } 


} 

class Slot { 
    private String slotName; 
    public Slot(String name){ 
     slotName = name; 
    } 

    public String getSlotName() { 
     return slotName; 
    } 

    public void draw() { 

    } 
} 
Questions connexes