我有一個問題..我有類似...隨機生成變量名?
if(condition(TEST) == true){
something (NAME) = new something(this);
}
這是一個循環,也有過被迭代許多測試變量裏面。我不知道有多少可能每個人都需要一個「(NAME)」變量,所以基本上我想知道如何讓java「即時」爲這些變量生成一個名稱?
謝謝!
我有一個問題..我有類似...隨機生成變量名?
if(condition(TEST) == true){
something (NAME) = new something(this);
}
這是一個循環,也有過被迭代許多測試變量裏面。我不知道有多少可能每個人都需要一個「(NAME)」變量,所以基本上我想知道如何讓java「即時」爲這些變量生成一個名稱?
謝謝!
您確定不想將結果存儲在數組或集合中嗎? 最接近的是使用Map
。隨機生成String
或Integer
密鑰,並將其用作Something
值的密鑰。
// Before all
Map<String, Something> myMap = new HashMap<String, Something>();
// For each of these
if(condition(TEST) == true){
String name = "VAR" + Math.random() // Don't remember the syntax here
myMap.put(name, new something(this));
}
除非我誤解了你的問題,否則你不需要這樣做。
Java中的變量是詞彙範圍的,因爲它們只是針對它們存在的塊而定義的。在循環的每次迭代中,參數name
將引用不同的對象,並且不會受到它在前一個循環中保留的值的影響。
所以,你只需要在循環中有多少個參數,因爲你想在循環中操作屬性(可能只有一個),在任何情況下,當你編寫代碼時, (在編譯時),並且與(運行時)數量的TEST對象分離。
如果你不將它們存儲或更高版本引用他們,他們都是同一類型的,你可以使用相同的變量爲所有的人:
// Outside loop ...
something $name;
// Inside loop ...
if(condition(TEST) == true){
$name = new something(this);
}
如果您沒有在循環外使用該變量,則該變量不需要在循環外部聲明。 – dsmith 2010-06-24 23:37:06
最簡單的方法在ID生成(例如一個Map)就是使用AtomicInteger。
AtomicInteger counter = new AtomicInteger();
Map<String, Something> map = ...
String id = Integer.toString(counter.getAndIncrement(), 36);
map.put(id, new Something());
// later
Something s = map.get("0");
或者使用自然索引的列表會更簡單。
List<Something> list = ...
list.add(new Something());
// later
Something s = map.get(0);
顯示實際的代碼將消除猜測這應該是如何工作的需要/什麼它確實... – Eiko 2010-06-24 21:39:22
真的,有沒有必要做這樣的事情:如果(條件(TEST)==真)只要(條件(TEST))足夠。 – wlk 2010-06-24 22:02:49