有没有一种简单的方法来 return 整数值和/或双精度值?

Is there a simple way to return either a integer value and or double value?

我正在 java 中重新创建类似于 pandas 数据框的东西来读取 csv 文件和操作数据。我将所有代码都编码为通用的,以处理 csv 文件中的任何类型的列,以及自动声明包装器 classes,例如 Integer 和 Double(如果它是一个数字)。问题是现在我正在编写只涉及数字列的函数,但我仍然需要进行大量的强制转换以获得实际值,我想找到一个更优雅的解决方案。

我已经尝试在方法中进行转换并且它有效,但我正在寻找一种方法来 return 数值,如果它是列 class 中的数字,以避免这样做对于未来的功能:

  //the basic structure
  public class Column<T> {
  public String type; //column type
  public String name; //column name
  public ArrayList<T> values; //array of values
...
  public T getValue(int index) {
      return values.get(index);
  }
}


//in another file is the problem
public static double variance(Column c) {
    double mean = mean(c);
    double var = 0;
    for(int i = 0;i < c.getLength();i++) {
                            // here is the problem
        var = Math.pow((((Number) c.getValue(i)).doubleValue()-mean),2);
    }
    return var/c.getLength();
  }

如果您可以自由地修改您的 Column class 或制作另一个更具体的子 class,而不是在对象外部进行强制转换,您可以将方法添加到return 如果是 double,则内部是 double,如果是 int,则为 int,等等,因为在您的示例中,您知道 ColumnColumn<Number>。例如:

public class DoubleColumn extends Column<Number> {
    @Override
    public Double getValue(int index) {
        return super.getValue(index).doubleValue();
    }
}

然后您可以相应地修改方差方法以采用 DoubleColumn 而不是 Column