gpt4 book ai didi

java - 有没有办法使用字符串来选择变量?

转载 作者:行者123 更新时间:2023-12-02 08:52:54 25 4
gpt4 key购买 nike

假设我们有以下代码来在动画中的 Sprite 之间切换。有八个方向(北、东北、东等)。我们在它们之间切换,现在我们根据动画周期选择一个 Sprite 。这是代码:

switch (direction){
case 0: // south
switch(sprite){
case 0: return moveSouth0;
case 1: return moveSouth1;
case 2: return moveSouth2;
case 3: return moveSouth3;
}
case 1: // south-east
switch(sprite){
case 0: return moveSouthEast0;
case 1: return moveSouthEast1;
case 2: return moveSouthEast2;
case 3: return moveSouthEast3;
}
case 2: // east
switch(sprite){
case 0: return moveEast0;
case 1: return moveEast1;
case 2: return moveEast2;
case 3: return moveEast3;
}
case 3: // northeast
// etcetera
}

这有效。变量“moveSouth0moveSouth1”等都是 BufferedImage 变量。

但是,它很长并且使用相同的代码。我理想的情况是执行以下操作:

String s;
switch (direction){
case 0: // south
s = "South";
break;
case 1: // south-east
s = "SouthEast";
break;
// etcetera
}
return "move" + s + sprite; // <- now returns string, should return BufferedImage

如您所见,这里我不必在每个方向情况下再制作 8 个 switch 子句。显然这不起作用,因为我必须返回一个 BufferedImage 而我现在返回一个 String

问:所以我正在寻找一种将 String 更改为变量名称的方法

这样的事情可能吗(在 Java 中)?

最佳答案

我会重新表述一下。虽然它可以通过反射来完成,但它会很丑陋,不安全(因为,正如您在另一个答案中看到的那样,您必须以字符串形式提供变量名称,并且如果您输入不存在的变量的名称,则编译器不会捕获你的错误,并且你会在运行时得到一个异常)并且效率较低。

因此,您应该做的是将所有这些变量存储在一个数组中,并使用数组的索引来确定返回哪些变量。

二维数组会更好。

BufferedImage[][] move = ...;
...
return move[directionIndex][spriteIndex];

关于java - 有没有办法使用字符串来选择变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25219394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com