2012-02-10 61 views
3

我不認爲我的術語是正確的,不是那個。我想要做的是獲取一個字符串,然後用它來運行函數。 。例:在Java中傳遞一個字符串作爲參考?

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

經常我可以這樣做:

slot12.Draw(); 

而且我希望能夠做到這一點:

slotString.Draw(); 

有了它在動態與時隙12代slotString場景。如果我真的有我可以做類似的東西:

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

等,但我真的不希望使用插槽的X線數的X號。

任何幫助表示讚賞:d

+5

說一個'地圖<字符串,老虎>'工作? – 2012-02-10 04:21:59

回答

5

一個可能的解決方案是使用一個HashMap,其中的關鍵是slotNumber,並且該值指向該槽。然後你可以做下面的事情。

//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

也許使用地圖,如果你的插槽稀疏包裝。如果它們密集包裝,則可以使用一系列插槽。無論哪種情況,您都會根據索引進行槽位查找,然後在查找的槽位上調用Draw。

0

您將有這樣的事情:

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); 

請參見下面的類的定義:

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() { 

    } 
} 
相關問題