簡體   English   中英

在Java中使用數組/循環設置變量的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM