2012-02-05 41 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代替:)