使用 Javassist,我正在创建类之间的耦合。但是,当我尝试创建一个接受参数的类的实例时,显然存在一个问题。我真的希望能够获取 CtClass 的初始化程序(如果它们不是空的构造函数),然后传入它所期望的变量。例如,考虑我正在尝试在 A 类中创建 B 类的实例:
Public class B{
public int foo;
public char spam;
public B(int bar, char eggs){
foo = bar;
spam = eggs;
}
}
Public class A{
B injected = new B(X,X);
}
目前我对类初始化程序使用“isEmpty”检查,如果它不为空,我尝试了以下两种方法。两者都给我一个没有这样的构造函数错误:
我认为“getClassInitializers”方法应该将 CtClass 的构造函数作为数组返回,但我不确定如何处理这个数组,eclipse 甚至不会让我声明。我想遍历一组预期参数并制作该类型的虚拟变量,以便我可以执行以下操作:B injected B = new B (13, w);
更糟糕的情况是,我可以在 B 中创建一个空白类初始值设定项,所以injected B = new B();
我认为我应该能够使用 makeClassInitializer() 方法,但这对我不起作用,因为我仍然得到一个 no such constructor 错误。