2012-03-13 140 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初始化之前创建该结构数组。