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

3
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文件,并将数据转换为可操作的数据类型。当它被读入时,它开始作为一组字符串对象。在我的上面的代码中,我试图将它转换为一个字符串数组。我的主要问题是将字符串对象转换为字符串文字。我一直收到错误java.lang.Object[]无法转换为java.lang.String[]。上面的代码可以编译,但仍未实现我的目标。当它打印时,我仍然得到一个字符串对象。感谢任何建议。


你能够粘贴堆栈跟踪并确定哪一行代码出现了错误吗? - Brooks
1个回答

6

使用以下代码:

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

您调用的 myEntries.toArray() 方法始终返回一个无法转换为 String[]Object[] 类型。
但是,在上面的示例中,我调用了一个重载方法,您可以将正确类型的数组作为参数传递进去。如果所传递的数组大小足够,toArray() 方法将填充该数组。
如果不足以容纳所有元素,则会创建一个右类型的新数组(与您传入的参数类型相同)。
因此,您还可以编写以下代码:
String[] data = myEntries.toArray(new String[0]);

有些人喜欢这样做,但我不喜欢这样会创建一个无用的对象,虽然在实际应用中这不会影响性能。


1
我手头没有,但显然在Java 6之后的版本中,零数组实际上更快。 - chrylis -cautiouslyoptimistic-

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