Каков предпочтительный способ передачи массива небольших объектов из Java в машинный код

#java #java-native-interface

#java #java-native-interface

Вопрос:

Учитывая простой Java-класс, подобный этому:

 class MyData {
    public int a;
    public int b;
    public int c;
    public int d;
}
  

И MyData data[] что мне нужно передать в машинный код, лучше ли сделать что-то вроде этого:

 for (MyData item : data) {
    myNativeMethod(item.a,item.b,item.c,item.d);
}
  

Или лучше myNativeMethod(data) и использовать GetArrayLength , GetObjectArrayElement и GetIntField ?

В этом случае «лучше» намеренно расплывчато. Производительность и ремонтопригодность — это обе проблемы.

Ответ №1:

В вашем конкретном случае проще передавать отдельные значения в качестве параметров. Однако это загромождает ваш Java-код, как только объект становится более сложным.

Сказал, что я не вижу большой разницы в предпочтении одного способа другому.