2013-10-25 13 views
0

我正在接受一個Java庫,它接受一個double []作爲參數並向該數組添加元素。我嘗試用JavaConversions創建一個Scala可變數組,但它無法管理此轉換。有任何想法嗎?調用java函數,它以double []作爲參數

的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問題。

+0

你能發佈無法正常工作的代碼嗎? – Reimeus

+1

使用Array [java.lang.Double] http://stackoverflow.com/questions/3940699/passing-java-array-to-scala – Ashalynd

+0

這個問題是關於調用Java數組的一個scala函數。更重要的是不存在可變性問題。我有一個java函數,它接受一個double []並向數組添加一個數字(out參數)。 – Parag

回答

5

我想知道你說的這個可變數組是什麼。只需使用Array[Double] - 即的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'或類似的方法。 –

相關問題