有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我尝试了以下方法:

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

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

我做错了什么

编辑

遗憾的是,我不得不删除显示Eclipse调试器输出的图像的链接,因为它不再可用。请不要奇怪为什么在答案中提到了一个不再存在的图像


共 (2) 个答案

  1. # 1 楼答案

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

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

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

    当然,即使使用了Object[]的演员阵容,你仍然可以用一句话来表达,但这很难看:

    String[] strings = (String[]) ((Object[])values)[0];
    
  2. # 2 楼答案

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

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