Могу ли я переопределить метод / конструктор, используя отражение в Java? - PullRequest
3 голосов
/ 26 мая 2011

У меня есть класс с именем A, и мне нужно создать новый объект этого класса без вызова его конструктора.Я хочу установить все его атрибуты с помощью отражения.

Можно ли переопределить конструктор класса A с помощью отражения?

Или есть другой способ сделать это?

Ответы [ 2 ]

7 голосов
/ 26 мая 2011

В Sun / Oracle JVm вы можете использовать Unsafe.allocateInstance(Class).В противном случае вы должны сгенерировать байт-код, чтобы создать экземпляр без вызова конструктора.Вы можете использовать ASM для этого.Вы не можете создать экземпляр без конструктора, используя только Reflection.

Кстати: вы можете определить новый метод, используя манипулирование байтовым кодом, но чтобы добавить конструктор, вы должны изменить класс до его загрузки.(Это сложно сделать)

0 голосов
/ 26 мая 2011

Вызвать объект с помощью конструктора, который принимает наименьшее количество аргументов; используя фиктивные аргументы. Затем продолжайте манипулировать объектом так, как вам нравится.

...