我有一个prefuse-table结构,即每行由一个元组表示,你可以通过table.get(rowNumber, columnName)
或tuple.get(columnName)
访问值 - 而get将返回{{ 1}}如果您知道返回类型,则有更具体的方法,例如Object
或getDouble()
。
除了数字,该表还存储时间,可以getInt()
,即String
或08:15
。为了计算适当的平均值,我必须使用两次之间的距离(例如,20:10
或更准确的11:55
,以分钟为单位)。
因此,每个数字都被分配一个区间长度,用作加权因子,即715
。此外,它被添加到tuple.getDouble("sales") * 60 / Double.valueOf(interval)
类型的mean
变量中(我使用它因为它可以灵活地使用多种数字类型)。总的来说,该行看起来像Number
但并非所有数字列都是mean = mean.doubleValue + tuple.getDouble("sales") * 60 / Double.valueOf(interval);
类型,因此我对int,float和long使用相同的行。它们看起来像double
,依此类推。当然,在我的情况下,我会事先检查一个列的类型,最后得到四个mean = mean.intValue + tuple.getInt("aColumn") * 60 / Integer.valueOf(interval)
和四行计算。
现在我想知道是否有一种有效的方式来对我需要的所有参数进行类型转换。我只需使用if
我无法想出一种更有效地设计它(并且更好看)的方法,因为如果我尝试在计算中使用Class type = column.getColumnType();
我被告知
对于参数类型Object,int
,运算符*未定义
有没有办法动态地对这种计算进行类型转换(可能使用不同的数据结构,即不使用type.cast()
)?我现在所处的工作并不可怕,只是因为我并不是真的很满意,如果另一个人继续使用这段代码,那就太糟糕了。