[英]Setting values of variables with an array/loop in java
如何通過循環設置變量的值? 例如:
String cur[]= {"A","B"};
String strA,strB;
for(int i =0;i < cur.length;i++) {
str+i = "Blah";
}
“ str + i”部分應包含什么內容,以便將strA和strB設置為“ Blah”?
謝謝
你不要那樣做。 而是,您創建某種類型的集合。 例如,您可以使用地圖:
String[] cur = { "A", "B" };
Map<String, String> map = new HashMap<String, String>;
for (String name : cur)
map.put(name, "Blah");
}
除非您使用反射(這對局部變量無濟於事),否則您將無法“計算”要使用的變量名稱..., 也不應該對此類對象使用反射。
假設您要通過字符串名稱訪問值。 如果可以使用連續范圍的整數(從0開始),則數組或List<T>
可能更合適。 這取決於您要執行的操作。
沒有簡單的方法可以完全滿足您的需求。 但是,有一個簡單的選擇:不要單獨命名您的字符串,而只需使用單個數組即可。
String[] cur = new String[2];
for (int i = 0; i < cur.length; ++i) {
cur[i] = "Blah";
}
如果必須按名稱而不是索引訪問這些字符串,請考慮創建Map<String, String>
。
你不能 你可能不應該。
嚴格來說,您應該使用java.lang.reflect類。 它允許您執行某種動態成員訪問,您可以使用諸如javascript和/或ruby之類的語言進行訪問。 但是,在這種情況下,這似乎有些矯kill過正。
另一個更有用的解決方案是先生。 喬恩·斯基特(Jon Skeet)提出。 根據您的實際需求,它可能會起作用。
您可以執行類似的操作,盡管我不確定您為什么要執行以下操作:
import java.lang.reflect.Field;
public class Test {
static public String strA, strB;
public static void main(String args[]) throws Exception {
String cur[]= {"A","B"};
for(int i =0;i < cur.length;i++) {
Field field = Test.class.getField("str" + cur[i]);
field.set(null, "Blah");
}
System.out.println(strA);
System.out.println(strB);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.