我最近询问this question是否有可能在Java中参数化原始数组的类型。 (基本上,我有一个数组,我希望基于某个参数成为double[]
或float[]
。我使用的是基元数组而不是包装类数组(Double[]
,Float[]
)因为它们的内存和时间效率更高,特别是在处理大型向量操作时。看来答案是否定的,你不能用Java做到这一点。
所以,我的新问题是:我可以在Scala中执行此操作吗?我理解原语是更隐蔽的,并且只在某些操作上加载...所以如果可以将我的数组参数化为Double或Float,并且编译器确实将它们实现为原语,我该如何判断它们是否存在在我的源代码中,如果我只是去“查找:双击,替换:浮动”,那么就会被取消装箱,或以其他方式实施效率低下?
答案 0 :(得分:1)
这对你有用吗?
object SpecialisedArray {
def apply[@specialized(Float, Double) T: ClassTag](size: Int) = new Array[T](size)
}