2011-07-14 49 views
1

作爲一個練習(注意我是一名編程學生,但這是一個練習來滿足我自己的好奇心,而不是爲了分級賦值)使用實例變量時,我想創建一個未指定每個類的實例的數量併爲每個實例分配一個唯一的名稱。我的想法是做一個循環,例如:在java中創建多個不同的標識符

int i=1; 
while (! response.equals("quit")){ 
    SomeClass object_i = new SomeClass(); 
    i++; 
... 
} 

這將允許根據需要由用戶的程序來創建SomeClass的儘可能多的情況下,則可以參照回實例變量在每一個如:

for (i=1; i <= count; i++){ 
    sum += object_i.nonStaticInstanceVariable; 
} 

若您使用的AtomicLong在這個線程唯一標識符名稱的建議: java for loop executes too fast gives System.currentTimeMillis() duplicate

,但我不確定我會如何指的是特定對象的實例變量創建使用此方法。任何人都可以建議一種方法來做我想在Java中做的事情嗎?

非常感謝。

+1

指數爲什麼不添加它們集合在訪問? – Kal

回答

0

我會使用地圖和universally unique identifier(UUID)。例如,請參閱java.util.UUID

Map<UUID,SomeClass> map = new HashMap<UUID,SomeClass>(); 

for (int i=0;i<1000000;i++) { 
    UUID key = UUID.randomUUID() 
    map.put(key, new SomeClass()); 
} 

現在,如果用戶有UUID那麼他們可以得到一個參考適當SomeClass

0

笑,你必須真的只是首發。
讀這 - http://download.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

你們中的大多數有情理之中的事情,但你需要做 -

SomeClass myObject[i] = new SomeClass(); 

編輯:其他人的選項也可以工作,但是你應該學會做這種方式第一個

+0

儘管陣列可能不符合他的要求,因爲他將被迫定義陣列的上限......雖然,誠實地說,我相信每個學生都應該學會如何編寫自己的ArrayList類型的類(就這樣他們可以欣賞它,而不是它們可以使用它!)。 –

0

不能創建實例變量在運行時(短期編譯和加載新類的)

使用數組或爲此

一個地圖(或者使用動態語言如Groovy是運行在JVM在內部將使用類似於地圖的結構)

1

在您的第一個for-loop中,您正在創建SomeClass的實例,但您沒有對它們進行任何操作。你想要做什麼是他們聚集起來在某些類型的集合,所以你可以稍後再引用它們,就像這樣:

int i=1; 
List<SomeClass> classes = new ArrayList<SomeClass>(); 
while (! response.equals("quit")){ 
    classes.Add(new SomeClass()); 
    i++; 
    ... 
} 

現在可以遍歷您的收藏和做一些有用的東西與他們:

for (SomeClass someClass : classes) { 
    sum += someClass.nonStaticInstanceVariable; 
} 
+0

我不認爲你不應該喂那麼多東西。這是一個非常基本的問題,應該通過文檔學習,而不是複製和代碼。 – user606723

0

我想你只想使用某種集合,如數組或ArrayList。

List list = new ArrayList(); 
     int i=1; 
     while (! response.equals("quit")) 
    {  list.add(new SomeClass());  
    i++; 
} 

它可能然後通過獲取ArrayList中

list.get(index); 
相關問題