我认为我没有正确的术语,也不是那个。我要做的是获取一个字符串,然后使用它来运行函数。 ..示例:
int slotNumber = ((j*3)+i+1);
String slotString = "slot"+slotNumber;
我经常这样做:
slot12.Draw();
我希望能够做到这一点:
slotString.Draw();
在动态场景中用slot12替换slotString。如果我真的需要,我可以做类似的事情:
if (slotString == slot1) slot1.Draw();
if (slotString == slot2) slot2.Draw();
等等,但我真的不想在x个插槽中使用x行数。
感谢任何帮助:D
答案 0 :(得分: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();
答案 1 :(得分:4)
如果你的插槽稀疏,可能会使用Map。如果它们密集,您可能可以使用一系列插槽。在任何一种情况下,都可以根据索引进行插槽查找,然后在查找的插槽中调用Draw。
答案 2 :(得分: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() {
}
}