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

45

我正在使用一个返回"Object"类型普通对象的Web服务。调试清楚地显示该对象中有某种类型的数组,因此我想知道如何将这个"Object"强制转换为数组(或类似的对象)?

我尝试了以下方法:

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

但是什么都没有起作用。我总是得到一个InvocationTargetException。

我做错了什么?

编辑:

很遗憾,我不得不删除链接,该链接显示了Eclipse调试器的输出,因为它已不再可用。请不要想知道为什么在答案中提到了一张不存在的图片。


InvocationTargetException 包含另一个异常。它在说什么? - Peter Kofler
Eclipse报告ClassCastException。 - Jens
2个回答

55

你的values对象很明显是一个包含值的String[]Object[]

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

26

根据调试图像显示,您拥有的是包含字符串数组的对象数组。因此,您需要类似于以下内容:

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

您没有展示 values 的类型 - 如果它已经是 Object[],那么您可以只使用 (String[])values[0]

当然,即使强制转换为 Object[],您仍然可以在一条语句中完成它,但这很丑陋:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接