java.lang.Object []无法转换为java.lang.String []

时间:2016-02-03 02:11:24

标签: java string

public class Mass_Reading
{
   public static void main(String args[]) throws Exception
   {
     CSVReader reader = new CSVReader(new FileReader("Test_Graphs.csv"));

     List myEntries = reader.readAll();
     //System.out.println(myEntries);

     myEntries = new ArrayList<String>(myEntries);
     //System.out.println(myEntries);

     Object[] data = myEntries.toArray();
     System.out.println(data[0] + "");
     }
}

我正在尝试读取.csv文件并将数据转换为可行的数据类型。读入时它作为字符串对象列表开始。在上面的代码中,我尝试将其添加到字符串数组中。我的主要问题是将String对象变为String Literal。我一直得到错误java.lang.Object []无法转换为java.lang.String []。上面的代码编译,但仍然没有实现我的目标。当它打印时,我仍然得到一个String对象。感谢您的任何建议。

1 个答案:

答案 0 :(得分:5)

使用此代码:

String[] data = myEntries.toArray(new String[myEntries.size()]);

您调用的方法myEntries.toArray()始终返回Object[],无法转换为String[]

但是我在上面的例子中调用了一个重载方法,你可以在其中传入正确类型的数组作为参数。如果toArray()方法的大小足够,则String[] data = myEntries.toArray(new String[0]); 方法将填充传入的数组。

如果它的大小不够,它将创建一个正确类型的新数组(与传入的参数类型相同)

因此,你也可以写:

@RequestMapping(value = "/log/delete", method = RequestMethod.POST, params = "delete")
public String deleteLogs(@ModelAttribute("deleteForm") logDeleteForm deleteForm) {
    List<Long> formIds = deleteForm.getLogIds();
    if (formIds == null || formIds.size() == 0) {
        return "redirect:/projects/log";
    }
    for (Long id : formIds) {
        logService.deleteLog(id);
    }
    return "redirect:/projects/log";
}

有些人更喜欢这样,但我不喜欢这会产生一个浪费的对象,尽管在实际的应用程序中,这不会对性能产生影响。