【问题标题】:Call java function which takes double[] as parameter调用以 double[] 为参数的 java 函数
【发布时间】:2013-11-03 22:31:04
【问题描述】:

我正在与一个 Java 库交互,该库接受一个 double[] 作为参数并向数组添加元素。我尝试使用 JavaConversions 创建一个 Scala 可变数组,但它无法管理此转换。有什么想法吗?

Java:

 public static double libraryFn(double[] numbers) {
    .....
    numbers[0] = 1.0
 } 

斯卡拉:

def caller() {
     // Does not work
     val myNumbers =  new Array[java.lang.Double](1)
    libraryFn(myNumbers)
 }

感谢您的回复。更仔细地查看库源代码,看起来库有错误,根本不是 scala/java 问题。

【问题讨论】:

  • 你能贴出不起作用的代码吗?
  • 这个问题是关于使用 Java 数组调用 scala 函数的。更重要的是,可变性没有问题。我拥有的是一个 java 函数,它接受一个 double[] 并向数组添加一个数字(out 参数)。
  • java.lang.Double 不是 Java 的 double。它必须是 Array[Double],在 Scala 中。

标签: java scala


【解决方案1】:

我想知道你说的这个可变数组是什么。只需使用 Array[Double] -- 那 Java double[]

【讨论】:

  • val myNumbers = Array[Double](10); libraryFn(myNumbers) 抛出 java.lang.ArrayIndexOutOfBoundsException。
  • @Parag 这是数组大小的问题,而不是它的类型。此外,Array[Double](10) 创建了一个大小为 1 的数组,其中 10.0 作为其单个元素。如果你想要一个 size 10 的数组,你应该使用new Array[Double](10),或者使用Array.fill 或类似的方法。
猜你喜欢
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多