Я хочу перебирать все значения полей объекта данного класса с помощью JNI. Я нашел метод JVMTI GetClassFields
, чтобы получить поля jfieldID
s полей объекта. В API JNI я нашел методы Get<type>Field
. Однако, чтобы использовать эти методы, я сначала должен знать, имею ли я дело с одним из примитивов, массивами определенного типа или объектов. Я нашел метод JNI ToReflectedField
, чтобы я мог назвать методы Java API отражения. Однако это кажется чрезмерно сложным и подверженным ошибкам.get jclass from jfieldID
Есть ли способ достичь этого с помощью собственных функций JNI или JVMTI?
Почему? Вы можете сделать все это прямо на Java. Нет JNI или JVMTI вообще. – EJP
Я хочу скопировать объект и все его ссылки на «родную кучу», чтобы они были невидимы для GC. Если нет простого способа добиться этого с помощью JNI или JVMTI, я буду выполнять итерационную часть в Java. Я просто подумал, что код будет легче понять, если у меня есть итерационная и копирующая часть на родной стороне. – box
Я бы рискнул сказать, что * нет * Java-код легче понять на родной стороне :) – technomage