2011-04-21 40 views
0

比方说,我有一个实例化对象:我怎样才能引用实例化的对象只有它的名字的字符串表示?

private static ArrayList<Boolean> P1SOLUTION = new ArrayList<Boolean>(); 

将有类似的物体,如P2SOLUTION,P3SOLUTION等 我想要的功能:

Arrays.toString(P1SOLUTION); 

(其中阵列打印为一个字符串)。 但是,假设我只有...

String myString = "P1" + "SOLUTION"; 

所以,当我被无效写:

Arrays.toString(myString); 

我真正想要的String myString引用对象P1SOLUTION在这个例子中。我如何创建这个功能?

+0

尝试java reflaction。 – 2011-04-21 05:35:29

+4

@harryjoy:原帖建议有一个程序设计问题,需要修复一个kludge。如果是这样,那么在需要更好的设计的地方不应该使用反射。 OP很可能会更好地使用ArrayList数组或ArrayList数组。我认为我们需要更多地了解问题域,而不是他尝试的代码解决方案。 – 2011-04-21 05:40:29

+0

@oopnoob:你为什么觉得你需要这个?你用这个代码试图解决什么样的总体问题? – 2011-04-21 05:45:58

回答

2

将您的对象实例存储在Map中。然后通过名称来引用实例:

事情是这样的:

Map myMap = new HashMap(); 
myMap.put("P1SOLUTION", new ArrayList<Boolean>()); 

然后得到您的实例:

String myString = "P1" + "SOLUTION"; 
List myList = myMap.get(myString); 

希望这会帮助你。

相关问题