Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中传递字符串作为引用?_Java - Fatal编程技术网

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

在Java中传递字符串作为引用?,java,Java,我不认为我的术语是正确的,我不是一个这样的人。我想做的是找回一个字符串,然后用它来运行函数。。例如: int slotNumber = ((j*3)+i+1); String slotString = "slot"+slotNumber; 我可以经常这样做: slot12.Draw(); slotString.Draw(); 我希望能够做到这一点: slot12.Draw(); slotString.Draw(); 在动态场景中,它用slot12替换slotString。如果我真的必须

我不认为我的术语是正确的,我不是一个这样的人。我想做的是找回一个字符串,然后用它来运行函数。。例如:

int slotNumber = ((j*3)+i+1);
String slotString = "slot"+slotNumber;
我可以经常这样做:

slot12.Draw();
slotString.Draw();
我希望能够做到这一点:

slot12.Draw();
slotString.Draw();
在动态场景中,它用slot12替换slotString。如果我真的必须这样做,我可以做类似的事情:

if (slotString == slot1) slot1.Draw();
if (slotString == slot2) slot2.Draw();
诸如此类,但我真的不想用x行数来表示x个插槽数


非常感谢您的帮助:如果您的插槽拥挤不堪,请使用地图。如果它们是密集的,您可能可以使用一组插槽。在任何一种情况下,都可以基于索引执行插槽查找,然后在查找的插槽上调用Draw。

一种可能的解决方案是使用哈希映射,其中键是插槽编号,值指向插槽。然后你可以做如下的事情

//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();
//在程序开始时初始化
HashMap SlotHash=新的HashMap();
//用于检索插槽并调用Draw()的代码。
Slot select=SlotHash.get(slotNumber);
选择.Draw();

您可能会遇到如下情况:

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

    }
}
类SlotController{
Map slotMap=newhashmap();
公共无效添加插槽(插槽aSlot){
slotMap.put(aSlot.getSlotName(),aSlot);
}
公共无效绘图(字符串slotName){
slotMap.get(slotName.draw();
}
}
班槽{
私有字符串slotName;
公用插槽(字符串名称){
slotName=名称;
}
公共字符串getSlotName(){
返回slotName;
}
公众抽签(){
}
}
映射是否有效?