2013-10-25 6 views
0

Я взаимодействую с библиотекой Java, которая принимает двойной параметр [] как параметр и добавляет элементы в массив. Я попытался создать переменный массив Scala с помощью JavaConversions, но он не может управлять этим преобразованием. Есть идеи?Вызов функции java, которая принимает double [] как параметр

Java:

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

Scala:

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

Спасибо за ответы. Если посмотреть на источник библиотеки ближе, похоже, что в библиотеке есть ошибка и вообще не проблема с scala/java.

+0

Можете ли вы опубликовать код, который не работает? – Reimeus

+1

Использование Array [java.lang.Double] http://stackoverflow.com/questions/3940699/passing-java-array-to-scala – Ashalynd

+0

Этот вопрос касается вызова функции scala с массивом Java. Что еще более важно, нет проблемы с изменчивостью. У меня есть функция java, которая принимает двойной [] и добавляет число в массив (параметр out). – Parag

ответ

5

Интересно, что это за переменчивый массив, о котором вы говорите. Просто используйте Array[Double] - это is Java double[].

+0

val myNumbers = Array [Double] (10); libraryFn (myNumbers) бросает java.lang.ArrayIndexOutOfBoundsException. – Parag

+1

@Parag Это проблема с размером массива, а не с его типом. Кроме того, 'Array [Double] (10)' создает размер массива 1 с 10.0 в качестве его единственного элемента. Если вам нужен массив _size_ 10, вы должны сделать 'new Array [Double] (10)' или использовать 'Array.fill' или аналогичные методы. –

Смежные вопросы