java - 在 Java 中为变量分配动态名称

标签 java variables dynamic-variables

我想在 java 中分配一组变量,如下所示:

int n1,n2,n3;

for(int i=1;i<4;i++)
{
    n<i> = 5;
}

如何在 Java 中实现此目的?

最佳答案

这不是 Java 中做事的方式。 Java 中没有动态变量。 Java 变量必须在源代码中声明1

根据您想要实现的目标,您应该使用数组、ListMap;例如

int n[] = new int[3];
for (int i = 0; i < 3; i++) {
    n[i] = 5;
}

List<Integer> n = new ArrayList<Integer>();
for (int i = 1; i < 4; i++) {
    n.add(5);
}

Map<String, Integer> n = new HashMap<String, Integer>();
for (int i = 1; i < 4; i++) {
    n.put("n" + i, 5);
}
<小时/>

可以使用反射来动态引用源代码中已声明的变量。但是,这适用于属于类成员的变量(即静态字段和实例字段)。它不适用于局部变量。请参阅@fyr 的“快速而肮脏”的示例。

然而,在 Java 中不必要地做这种事情是一个坏主意。它效率低下,代码更复杂,并且由于您依赖于运行时检查,因此它更脆弱。这不是“具有动态名称的变量”。最好将其描述为对具有静态名称的变量的动态访问。

<小时/>

1 - 该说法略有不准确。如果使用BCEL或ASM,则可以在字节码文件中“声明”变量。但不要这样做!那就是疯狂!

关于java - 在 Java 中为变量分配动态名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60137671/

相关文章:

python - 索引错误: list index out of range on python dynamic variable length

java - 如何在 Windows 7 命令行上执行 .jar java 程序?

java - 为我的客户端类创建一个新文件

Java - 在 setBorder 中设置字体/颜色

c++ - 参数类没有 move 构造函数时IDE推荐 'pass by value and use std move'

variables - 访问具有在包内其他函数中的一个函数中定义的键值的变量

java - 在 Java 的局部范围内使用非最终局部变量

php - 将动态变量发送到 SASS

java - 为什么在解析 XML 时得到空节点值

jsp - 在 Struts 2 和 JSP 中使用带有多个参数的 getText()