2013-03-03 46 views
0

我的問題是在創建一個對象時命名爲dynamicaly,並且該名稱是來自用戶的輸入。命名對象動態?

下面是我的代碼中,我可以創建一個對象dynamicaly,但我將它命名specificaly像以前一樣在這種情況下,「OBJ」

private Class ClassName=null; 
private Object obj=null; 

ClassName=Class.forName(token[2]); 
obj=ClassName.newInstance(); 

所有我需要的是爲用戶指定ceate對象的名稱如果他說oject必須命名爲「X」,而不是「OBJ」

+2

爲什麼你試圖這樣做?它對你的用戶有用嗎?他不會看到你的任何代碼。 – 2013-03-03 16:24:38

+0

由於*對象*沒有名稱,因此不能動態地命名對象。只有*變量*具有名稱,並且這些名稱在編譯的代碼中幾乎不存在,所以這真的不是問題。我們需要一個「粘性」的Java常見問題解答部分,因爲這個同樣累了的問題一遍又一遍地被問到。 – 2013-03-03 16:38:37

回答

5

對象不具備名。變量有。但是你不能動態地創建變量。如果要將對象與名稱關聯起來,請使用Map<String, Object>

Map<String, Object> objectsByName = new HashMap<String, Object>(); 
... 
objectsByName.put("Joe", obj); 
... 
Object objectNamedJoe = objectsByName.get("Joe"); 
3

不能重命名你的變量名的原因,這是一個編譯時的過程一樣,用戶輸入的運行