在 Java 中将对象转换为双精度

The*_*Boy 2 java collections double casting exception

我试图在我的代码中处理很多源自单个关键点的 ClassCastExceptions。我将首先为这个问题提供一些背景信息

我正在从 csv 文件中读取不同类型的值。以下是包含它们的类的快照。

public class Row {
private Object[] data;

public Object getAtIndex(int i)
{
    return data[i];
}
}
Run Code Online (Sandbox Code Playgroud)

为了保存文件的不同行,我使用了

ArrayList<Row> rows;
Run Code Online (Sandbox Code Playgroud)

问题在于一个函数,其应该返回存储在该ArrayList特定列的双[]含有值。我目前的功能是这样的

public Double[] getByIndex(int i)
    {
        Double[] result = new Double[rows.size()];
        String temp;
        for(int j=0;j<rows.size();j++)
        {
            temp =(String)rows.get(j).getAtIndex(i); //java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
            result[j]=Double.parseDouble(temp);
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

这个 getByIndex() 在调用时抛出 ClassCastExceptions。我确保只为那些预计具有 Double 值的列调用此函数。有没有其他方法可以促进此 Object 到 Double 的转换。由于这个问题,我的进度停滞了。请帮忙。

Hak*_*rce 5

代替

temp =(String)rows.get(j).getAtIndex(i); //java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
result[j]=Double.parseDouble(temp);
Run Code Online (Sandbox Code Playgroud)

只需使用以下内容:

        result[j]=(Double)rows.get(j).getAtIndex(i);
Run Code Online (Sandbox Code Playgroud)