2014-10-31 59 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)];