2012-02-05 110 views
2

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

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

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

感谢给予任何帮助。

+1

你正试图实现什么?为什么你需要这样的功能? – Tim 2012-02-05 19:54:52

+0

几乎可以保证你实际上不需要或不需要那个。这是一个XY问题。 *编辑。*您还应该牢记编程的零一分多的规则。 – 2012-02-05 19:55:55

+0

Java不能这样工作,而且不仅仅是一个变量名比你想象的重要得多。实际上,在*编译*代码中,名称几乎不存在。如果要将对象与String关联,请使用Map或具有连续数字的对象使用数组。 – 2012-02-05 19:56:12

回答

0

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

+0

对不起回来迟了。我发现了另一种完成工作的方式,但是在大量阅读之后,没有,动态变量不能在Java中使用。我以前用PHP做过,并且正在寻找类似的方法。尽管使用诸如HashMaps之类的方法来映射数据是可行的。正如其他人所建议的。谢谢你们的帮助。 – Arran 2012-02-16 18:43:02

1

您正在尝试制作数组或字典。

+0

这不是一个真正的答案。表面上看,OP正在寻求某种反思。 – 2012-02-05 19:55:33

+2

@KerrekSB:这不是他要求的;这是他真正需要的。 – SLaks 2012-02-05 19:57:30

0

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

0

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

你可能想要考虑一些简单的像HashMap实例。

3

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

Object[] a = new Object[30]; 

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

,然后你可以使用

a[some number].someFunction(); 

如果你想想看,编译器怎么能知道什么是一定的真实变量的值将是,在实际的程序运行时间之外?然而,你不太可能需要实际做你想做的事情。

0

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

Map<String,Field> 

不会工作。使用JavaScript代替:)