我最近问过this question关于是否可以在 Java 中参数化原始数组的类型。 (基本上,我有一个数组,根据某些参数,我希望它是 double[]
或 float[]
。我使用基元数组而不是包装类数组( Double[]
、 Float[]
),因为它们的内存和时间效率更高,尤其是在处理大型 vector 运算时。答案似乎是否定的,您不能在 Java 中做到这一点。
所以,我的新问题是:我可以在 Scala 中做到这一点吗?我知道基元更加隐藏,并且仅在某些操作上装箱...因此,如果可以将我的数组参数化为 Double 或 Float,并且编译器确实将它们实现为基元,我如何判断它们是否正在被拆箱,或者以其他方式实现的效率比我在源代码中“查找: double ,替换: float ”的效率低?
最佳答案
这对你有用吗?
object SpecialisedArray {
def apply[@specialized(Float, Double) T: ClassTag](size: Int) = new Array[T](size)
}
关于java - 在 Scala 中使用通用基元数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35280903/