Java 8. 将Object[]转换为String[][]

3

我正在尝试将文件数据加载到JTable中。因此,使用Java 8流很容易将文件加载到字符串数组中:

BufferedReader br = new BufferedReader(new FileReader(f));
Object[] data = br.lines().map((s)->{
            String[] res = {s,"1"}; // Here's some conversion of line into String[] - elements of one row
            return res;
        }).toArray();
TableModel m = new DefaultTableModel( (String[][])data, cols);

但是最后一行代码会出现错误:Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.Object. 如何将数据强制转换为String[][]类型呢?

2个回答

8
如果您使用toArray(String[][]::new)而不是toArray(),它将返回一个String[][]而不是Object[],您根本不需要进行转换(如果将其分配给String[][])。

-2

将该转换代码段拆分成循环即可。

BufferedReader br = new BufferedReader(new FileReader(f));
Object[] data = br.lines().map((s)->{
        String[] res = {s,"1"}; // Here's some conversion of line into String[] - elements of one row
        return res;
    }).toArray();

String[][] dataMatrix = new String[data.length][];
for(int i = 0; i < data.length; i++){
    dataMatrix[i] = (String[]) data[i];
}
TableModel m = new DefaultTableModel(dataMatrix, cols);

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