2012-03-13 121 views
4

我想創建一個我的類(擴展JNA的結構)的數組來傳遞它的DLL函數。我將數據庫中的值傳遞給ArrayList,現在我需要將它們放入數組中。首先,我試圖使用ArrayList的指定者()方法,但它返回我下面的異常,當我調用本機功能:JNA,結構和陣列

java.lang.IllegalArgumentException: Structure array elements must use contiguous memory (bad backing address at Structure array index 1) 

如果我只是設置一個新的數組大小相同的ArrayList中,當我在我的類中設置結構體的'fields'時,它會返回一個NullPointerException異常。

有人可以幫我解決這個問題嗎?

+0

請顯示您用於轉換爲數組的代碼:) – Adrian 2012-03-13 20:32:54

+1

這很簡單。 MyClass myClass = new MyClass(); MyClass [] myArray =(MyClass [])myClass.toArray(sizeOfArray); – 2012-03-23 17:11:54

回答

2

Structure.toArray()爲您提供了連續分配的結構對象塊。在從「值」的ArrayList初始化之前創建該結構數組。