我想知道在Java中是否有任何方法可以爲新變量提供另一個變量的值。下面的代碼是我試圖做的一個非工作示例。作爲新變量名稱的Java變量值
int a = 0;
while(true){
String (a) = "newValue";
a = a + 1;
}
或
String b = "newVariableName";
int (b) = 1;
感謝給予任何幫助。
我想知道在Java中是否有任何方法可以爲新變量提供另一個變量的值。下面的代碼是我試圖做的一個非工作示例。作爲新變量名稱的Java變量值
int a = 0;
while(true){
String (a) = "newValue";
a = a + 1;
}
或
String b = "newVariableName";
int (b) = 1;
感謝給予任何幫助。
您不能在Java中創建動態變量名稱。我建議將這些變量放在一個以字符串作爲關鍵字的Map中。鑰匙可以是你想要的任何字符串。
對不起回來遲了。我發現了另一種完成工作的方式,但是在大量閱讀之後,沒有,動態變量不能在Java中使用。我以前用PHP做過,並且正在尋找類似的方法。儘管使用諸如HashMaps之類的方法來映射數據是可行的。正如其他人所建議的。謝謝你們的幫助。 – Arran 2012-02-16 18:43:02
您正在嘗試製作數組或字典。
這不是一個真正的答案。表面上看,OP正在尋求某種反思。 – 2012-02-05 19:55:33
@KerrekSB:這不是他要求的;這是他真正需要的。 – SLaks 2012-02-05 19:57:30
你不能這樣做。使用字典或地圖來存儲值。
不,在Java中沒有辦法做這樣的事情。您可以做的最接近的做法是在運行時創建代碼,並使用動態名稱創建的字段加載新類。
你可能想要考慮一些簡單的像HashMap實例。
不,這是不可能的。可以創建一個新對象並將其添加到數組或某種列表中。然後您可以通過下標引用新對象。 所以粗略例子是:
Object[] a = new Object[30];
for(int i = 0; i < 30; i++)
{
a[i] = new Object();
}
,然後你可以使用
a[some number].someFunction();
如果你想想看,編譯器怎麼能知道什麼是一定的真實變量的值將是,在實際的程序運行時間之外?然而,你不太可能需要實際做你想做的事情。
我不認爲反射會幫助,因爲沒有辦法如何創建Field的新實例。所以像
Map<String,Field>
不會工作。使用JavaScript代替:)
你正試圖實現什麼?爲什麼你需要這樣的功能? – Tim 2012-02-05 19:54:52
幾乎可以保證你實際上不需要或不需要那個。這是一個XY問題。 *編輯。*您還應該牢記編程的零一分多的規則。 – 2012-02-05 19:55:55
Java不能這樣工作,而且不僅僅是一個變量名比你想象的重要得多。實際上,在*編譯*代碼中,名稱幾乎不存在。如果要將對象與String關聯,請使用Map或具有連續數字的對象使用數組。 – 2012-02-05 19:56:12