Javassist: Как мне вызвать конструктор не по умолчанию для динамически генерируемого класса? - PullRequest
0 голосов
/ 28 июня 2011

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

Мой подход к созданию экземпляров до сих пор был ...

CtClass myClass . . . 
myClass.addInterfaces(.... //assume I have an interface that is nondynamic
InterfaceName interfaceinstance = (InterfaceName) (myClass.toClass().newInstance());

Есть ли лучший способ сделать это, который обеспечит большую гибкость?

Большое спасибо!

RB

1 Ответ

3 голосов
/ 28 июня 2011

предполагается, что вы хотите вызвать конструктор, который принимает строку в качестве параметра (я полагаю, вы знаете сигнатуру)

Class clazz = object.getClass();
Constructor ctr = clazz.getDeclaredConstructor(String.class);
Object instance = ctr.newInstance("Foo");
...