【问题标题】:Java variable value as new variable nameJava 变量值作为新变量名
【发布时间】:2012-02-05 19:52:30
【问题描述】:

我想知道在 Java 中是否有任何方法可以为新变量命名,该名称是另一个变量的值。下面的代码是我正在尝试做的一个非工作示例。

int a = 0;
while(true){
    String (a) = "newValue";
    a = a + 1;
}

String b = "newVariableName";
int (b) = 1;

感谢您提供的任何帮助。

【问题讨论】:

  • 你想要达到什么目的?为什么需要这样的功能?
  • 几乎可以保证您实际上并不需要或不想要它。这是一个XY问题。 编辑。您还应该牢记编程的零-一对多规则。
  • Java 不是这样工作的,而且不仅变量名没有你想象的那么重要。事实上,在编译代码中,这个名字几乎是不存在的。如果要将对象与 String 关联,请使用 Map,或者将对象与连续数字关联,请使用数组。

标签: java variables naming-conventions


【解决方案1】:

不,这是不可能的。可以创建一个新对象并将其添加到数组或某种列表中。然后您可以通过下标引用新对象。 所以一个粗略的例子可能是:

Object[] a = new Object[30]; 

for(int i = 0; i < 30; i++)
{
a[i] = new Object();
}

然后你可以使用

a[some number].someFunction();

如果您考虑一下,编译器如何知道某个真实变量的值将是什么,而不是实际程序运行时间?但是,您不太可能需要真正做自己想做的事情。

【讨论】:

    【解决方案2】:

    您正在尝试创建一个数组、列表或字典。

    【讨论】:

    • 这不是一个真正的答案。从表面上看,OP 要求进行某种反思。
    • @KerrekSB:这不是他想要的;这是他真正需要
    【解决方案3】:

    您不能在 Java 中创建动态变量名。我建议将这些变量放在一个以字符串为键的 Map 中。键可以是你想要的任何字符串。

    【讨论】:

    • 抱歉回来晚了。我找到了另一种完成工作的方法,但是在大量阅读之后,不,动态变量不能在 Java 中使用。我以前用 PHP 做过,正在寻找类似的方法。尽管使用 HashMaps 之类的方法映射数据是可行的。正如其他人所建议的那样。谢谢你们的帮助。
    【解决方案4】:

    你不能这样做。使用字典或地图来存储值。

    【讨论】:

      【解决方案5】:

      不,在 Java 中没有办法做这样的事情。您可以做的最接近的做法是在运行时创建代码并加载一个具有动态名称字段的新类。

      您可能想考虑一些更简单的东西,例如 HashMap 实例。

      【讨论】:

        【解决方案6】:

        我认为反射不会有帮助,因为无法创建新的 Field 实例。所以像

        Map<String,Field> 
        

        不会工作。改用 javascript :)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-27
          相关资源
          最近更新 更多