его поля
List<Field> fields = clazz.getDeclaratedFields();
И эти полям пытаюся поставить какие-то значения через
var field = fields.get(0);
field.set(clazz, "smth");
И это работает, если я подаю конкретный тип, на пример Bank response, но когда дженерик тип - оно жалуется что я туда сую Java.lang.Class, а не BankResponse
Как такое можно решить?
Надо объект передавать вместо класса. А ты Class передаёшь.
Ну, дженерик нельзя вернуть наружу. Так или иначе тебе придётся создать объект такого класса. Через рефлекшн надо вызвать конструктор этого класса и затем сетить ему поля.
Там будут в разного типа разные поля залетать
Один раз тебе придёт класс ClassA (у которого строка и инт), другой раз ClassB (у которого две строки). И когда к тебе приходит ClassA.class, тебе надо через рефлекшн взять его конструктор, создать объект класса ClassA, заполнить его данными и вернуть наружу. Объект вернуть, а не класс.
А как его данным заполнить?
Ну, получив объект, ты через рефлекшн можешь заполнить его поля. В строке 59 вместо clazz тебе надо будет отдавать объект (класса из response), который ты сконструируешь.
Обсуждают сегодня