2016-09-19 6 views
1

Могу ли я передать объекты JNA для инициализации и записи внутри java?Объекты JNA проходят по ссылке или по значению внутри кода Java

-> Возможно ли иметь метод, который инициализирует каждый элемент структуры и другие методы для заполнения массивов и т. Д.

Я не нашел ответа на Google/ни https://jna.java.net/

+0

Что вы имеете в виду под "ЮНА Objects"? JNA предоставляет инструменты для управления встроенными функциями _and_ data. – technomage

+0

, например, объект struct, я могу обойти, внутри java, одну и ту же структуру или обойти копии одной и той же структуры -> я могу манипулировать одним и тем же объектом или создавать копии значений с новой ячейкой памяти. – gismo

ответ

0

Вы можете синхронизировать родную память на объект Java, но вы не можете наложить объект Java на родной памяти, и вы не должны подвергать память объекта Java непосредственно на собственный код. Что делает JNA, это связать собственную память с объектами Java и предоставить методы для их синхронизации.

Сырое память:

Pointer memory = new Memory(128); 
memory.setInt(0, 1234) 

Структурированные данные:

MyStructure s = new MyStructure(); 
s.int_field = 1234; 
s.write(); 

s = new MyStructure(native_pointer); 
s.read(); 
System.out.println("Field: %s", s.int_field); 
+0

Вы могли бы представить простой пример того, как синхронизация должна быть выполнена? также, если я передаю объект struct в java и изменяю значения, изменяю ли фактические значения или меняю только локальную версию (как обычно работает java) – gismo