Java中如何通过引用传递字符串?

3

我觉得我可能术语不正确,因为我不擅长这方面。我的目标是获取一个字符串,然后用它来运行函数。例如:

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<String, Slot>可以吗? - nicholas.hauschild
3个回答

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

如果您的插槽稀疏,则可以使用 Map。如果它们密集包装,则可能可以使用插槽数组。在任何情况下,您都是根据索引进行插槽查找,然后对查找到的插槽调用 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() {

    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接