2012-02-10 2 views
3

Я не думаю, что у меня есть правильная терминология, не для этого. То, что я пытаюсь сделать, это вернуть строку, а затем использовать ее для запуска функций. .. Пример:Передача строки в качестве ссылки в Java?

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

Регулярно я могу это сделать:

slot12.Draw(); 

И я хочу, чтобы быть в состоянии сделать это:

slotString.Draw(); 

С его помощью подстановки slotString с slot12 в динамический сценарий. Если я действительно должен я мог бы сделать что-то подобное:

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

и таким, но я действительно не хочет, чтобы использовать й число линий й числа слотов.

Любая помощь приветствуется: D

+5

Бы 'Map ' работы? –

ответ

5

Возможным решением было бы использовать HashMap, где ключ - это номер слота, а значение указывает на слот. Тогда вы можете сделать что-то вроде следующего.

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

    } 
} 
Смежные вопросы