如何用变量的名称创建一个新类(对象?)?

问题描述:

比方说,我有一个类myClassString myString。我该如何做到这一点:如何用变量的名称创建一个新类(对象?)?

myClass [value of myString] = new myClass; 
+1

使用字符串值作为变量?你不能。你有这个理由吗? – 2013-03-27 22:50:29

你不能在Java中有一个动态变量。不过,你可以使用一个Map<String, Object>String myString为重点,并设置新的值作为新的类实例:

Map<String, Object> map = new HashMap<String, Object>(); 
map.put(myString, new MyClass()); 

如果你确定你的地图将只包含MyClass情况下,那么你可以使用Map<String, MyClass>

Map<String, MyClass> map = new HashMap<String, MyClass>(); 

您不能将字符串变量的值用作变量名称。 Java不允许这样做。

然而,在一个Map,您可以将字符串(如钥匙)的值相关联:

Map<String, MyClass> map = new HashMap<String, MyClass>(); 
map.put(myString, new MyClass()); 

这不正是你要寻找的,但在Java中,这是接近你将会得到。

+0

看起来像我们有同样的想法,并花了相同的时间来写我们的答案。 – 2013-03-27 22:52:41

+0

强类型如何相关?这更多的是关于编译时命名:) – 2013-03-27 22:53:13

+0

@Luiggi,伟大的思想家都相同,相隔2秒! – rgettman 2013-03-27 22:53:49

使用地图来存储您Object S按您的String

public static void main(String[] args) { 
    final String myString = "something"; 
    final Map<String, Object> map = new HashMap<String, Object>(); 
    map.put(myString, new Object()); 
} 

索引有关使用泛型和使用这个类创建具有类型参数

public MyGenClass<K,V>{ 
private Map<K,V> map = new HashMap<K,v>(); 

public Map<K,V> getMap(){ 
    return map; 
} 

public void setMap(Map<K,V> iMap){ 
    map=iMap; 
} 

} 

一个基类的东西,就可以轻松搞定不同类型的地图,同时具有类似的方法。

享受:)