【发布时间】:2010-11-09 17:55:47
【问题描述】:
我正在实现一个接口,其功能类似于可以包含某种对象类型的表。接口指定如下函数:
double[] getDoubles(int columnIndex);
让我感到困惑的是,在我的实现中,我将表数据存储在二维 Object 数组 (Object[][] data) 中。当我需要返回值时,我想做以下事情(假设getDoubles()只会在包含双精度的列上被调用,所以不会有ClassCastExceptions):
double[] getDoubles(int columnIndex) {
return (double[]) data[columnIndex];
}
但是 - Java 不允许将 Object[] 强制转换为 double[]。将其转换为 Double[] 是可以的,因为 Double 是一个对象,而不是原语,但我的界面指定数据将作为 double[] 返回。
所以我有两个问题:
- 有什么方法可以从
Object[][]表中取出列数据并返回基元数组? - 如果我将接口更改为返回
Double[],是否会对性能产生影响?
【问题讨论】:
-
为什么需要将数据作为 Object[][]?
-
该表可以存储任何类型的数据:字符串、双精度、整数、其他类型等
-
那你怎么能保证 columnIndex 的数组只包含双精度数/双精度数呢?
-
使用该接口的任何人只负责在包含双精度的列上调用 getDoubles()。
标签: java arrays autoboxing