java - 在 Scala 中使用通用基元数组

标签 java arrays scala generics types

我最近问过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/

相关文章:

python - 为什么这个简单的 Spark 程序没有使用多核?

scala - 将多个类路径条目添加到 Scala REPL 类路径

java - 在 Java 中将接口(interface)转换为类

java - 断言单例对象不为空

java - 无法产生随机数?

arrays - 如何快速比较和显示 TableView 中numberOfRowsInSection中的不同数组计数

scala - 在运行时获取 Akka HTTP 的版本

java - 错误: Unsupported Media Type (Codename One)

c++ - 获取数组的稀疏子集作为引用

c - malloc 如何申请堆内存