169 похожих чатов

Есть тип типа Class<?> clazz Class.forName(response.getName) У которого забрали ссылки на

его поля
List<Field> fields = clazz.getDeclaratedFields();

И эти полям пытаюся поставить какие-то значения через
var field = fields.get(0);
field.set(clazz, "smth");

И это работает, если я подаю конкретный тип, на пример Bank response, но когда дженерик тип - оно жалуется что я туда сую Java.lang.Class, а не BankResponse


Как такое можно решить?

7 ответов

18 просмотров

Надо объект передавать вместо класса. А ты Class передаёшь.

Plant worker
Так он дженерик

Ну, дженерик нельзя вернуть наружу. Так или иначе тебе придётся создать объект такого класса. Через рефлекшн надо вызвать конструктор этого класса и затем сетить ему поля.

Plant worker- Автор вопроса
Evgenii Morozov
Ну, дженерик нельзя вернуть наружу. Так или иначе ...

Там будут в разного типа разные поля залетать

Plant worker
Там будут в разного типа разные поля залетать

Один раз тебе придёт класс ClassA (у которого строка и инт), другой раз ClassB (у которого две строки). И когда к тебе приходит ClassA.class, тебе надо через рефлекшн взять его конструктор, создать объект класса ClassA, заполнить его данными и вернуть наружу. Объект вернуть, а не класс.

Plant worker- Автор вопроса
Plant worker
А как его данным заполнить?

Ну, получив объект, ты через рефлекшн можешь заполнить его поля. В строке 59 вместо clazz тебе надо будет отдавать объект (класса из response), который ты сконструируешь.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта