在Java中传递字符串作为引用?

时间:2012-02-10 04:19:37

标签: java

我认为我没有正确的术语,也不是那个。我要做的是获取一个字符串,然后使用它来运行函数。 ..示例:

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

3 个答案:

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

    }
}