Java:将对象转换为数组类型

时间:2009-10-23 06:45:49

标签: java

我正在使用一个返回“Object”类型的普通对象的Web服务。调试清楚地表明在这个对象中有某种数组,所以我想知道如何将这个“对象”转换为数组(或类似的)?

我尝试了以下内容:

Collection<String> arr = (Collection<String>) values;
Vector<String> arr = (Vector<String>) values;
ArrayList<String> arr = (ArrayList<String>) values;

但没有任何效果。我总是得到一个InvocationTargetException。

我做错了什么?

修改

可悲的是,我不得不删除显示Eclipse调试器输出的图像的链接,因为它已不再可用。请不要错过为什么在答案中提到的图像不再存在。

2 个答案:

答案 0 :(得分:35)

您的values对象显然是Object[],其中包含String[]个值。

String[] stringValues = (String[])values[0];

答案 1 :(得分:18)

你得到的(根据调试图像)是一个包含字符串数组的对象数组。所以你需要这样的东西:

Object[] objects = (Object[]) values;
String[] strings = (String[]) objects[0];

您尚未显示values的类型 - 如果已经Object[],那么您可以使用(String[])values[0]

当然即使使用演员Object[],你仍然可以在一个声明中做到这一点,但这很难看:

String[] strings = (String[]) ((Object[])values)[0];