Java 在Scala中使用通用基元数组

Java 在Scala中使用通用基元数组,java,arrays,scala,generics,types,Java,Arrays,Scala,Generics,Types,我最近询问是否可以在Java中参数化基元数组的类型。(基本上,我有一个数组,根据一些参数,我想成为double[]或float[]。我使用的是原语数组,而不是包装类数组(double[],float[])因为它们的内存和时间效率更高,特别是在处理大型向量运算时。答案似乎是否定的,在Java中无法做到这一点 所以,我的新问题是:我能在Scala中做到这一点吗?我知道原语是更隐蔽的,并且只在某些操作上装箱……所以如果可以将数组参数化为双精度或浮点型,并且编译器确实将它们实现为原语,那么我如何判断它们

我最近询问是否可以在Java中参数化基元数组的类型。(基本上,我有一个数组,根据一些参数,我想成为
double[]
float[]
。我使用的是原语数组,而不是包装类数组(
double[]
float[]
)因为它们的内存和时间效率更高,特别是在处理大型向量运算时。答案似乎是否定的,在Java中无法做到这一点


所以,我的新问题是:我能在Scala中做到这一点吗?我知道原语是更隐蔽的,并且只在某些操作上装箱……所以如果可以将数组参数化为双精度或浮点型,并且编译器确实将它们实现为原语,那么我如何判断它们是否被取消装箱,或者以其他方式实现的效率较低这比我在源代码中直接使用“Find:Double,Replace:Float”要好得多。

这对您有用吗

object SpecialisedArray {
  def apply[@specialized(Float, Double) T: ClassTag](size: Int) = new Array[T](size)
}

你看过@specialized指令了吗?这可能会有帮助,谢谢,我会试试看。