动态命名对象?

时间:2013-03-03 16:23:22

标签: java reflection

我的问题是在创建对象时动态命名对象,并且名称来自用户。

以下是我的代码,我可以在其中动态创建一个对象,但我必须特别指出它,就像在这种情况下'obj'

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

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

我需要的是创建对象,因为用户指定了它的名称,就好像他说对象必须命名为'x'而不是'obj'

2 个答案:

答案 0 :(得分:5)

对象没有名称。变量有。但是你无法动态创建变量。如果要将对象与名称关联,请使用Map<String, Object>

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

答案 1 :(得分:3)

您无法重命名变量名,因为这是一个编译时进程,用户输入是运行时