2014-10-31 56 views
-1

我有一個對象,我想是隨機這樣的名字擴展對象標題:用繩子

Object object = type_""+rand(1,4); 

所以「對象」可能是object_1,或object_2等(他們定義其他地方) 但是,這似乎只有對象是一個字符串的工作。它對其他類型也如何工作?

爲了使它更清楚,這裏有一個例子,whcih創建一個Sprite(在andengine):

super(2, 900, ResourcesManager.getInstance().box_1 , vbo); 

但box_1是randomized..could也是box_2,box_3 ...我如何能實現它?

+1

我真的不明白你想做什麼。你有自己的班級,想要在其中設置標題嗎?你想構造隨機類型的對象嗎? – 2014-10-31 11:30:58

+2

你的代碼不能編譯,你的問題沒有意義 – Dici 2014-10-31 11:31:29

+0

你對「對象標題」有什麼意思? Java中沒有標題。請描述你真正想要達到的目標/爲什麼需要這個標題。 – Tom 2014-10-31 11:32:00

回答

0

基於更新的問題

您可以使用字符串做這個完全重寫的,但它是一個有點哈克:

super(2, 900, ResourceManager.class.getDeclaredField("box_" + (1 + new Random().nextInt(2))).get(ResourcesManager.getInstance()) , vbo); 
+0

我認爲他正試圖從本地範圍中按名稱選擇變量。我猜想在python中,所有內容都是字典而不是Java。 – Maxaon3000 2014-10-31 11:45:38

+0

@ Maxaon3000是的,他在做出回答後做了一個修改。在Java中,它也是可能的,雖然很hacky。您可以通過這些屬性的標題獲取對象並獲取其屬性。 – 2014-10-31 11:47:32

+0

你可以通過使用反射的屬性名稱得到一個對象,但我認爲他試圖通過本地作用域的變量名來選擇。 – Maxaon3000 2014-10-31 11:51:25

1

你試圖做到這一點的方式在Java中是不可能的。您的對象引用需要位於容器中以從中進行選擇。例如,您可以使用數組

Object[] arr= new Object[]{obj1,obj2,obj3}; 
Object rand = arr[new Random().nextInt(0,3)];