我有以下课程结构 -
class Student{
int age;
String name;
}
class Group{
Student allStudents[];
int avgAge;
}
class Handler{
public int myFunction(Group g){
...
do something with 'g'
...
return k;
}
}
我想使用自定义的“Group”对象从Javassist调用函数“myFunction”,并测试该对象的函数行为。
在不同的场景中,我能够使用具有原始数据类型参数的函数,如下所示 -
ctBehavior.insertBefore("{for (int i=0; i < $args.length; i++) {System.out.println($args[i]);}}");
我想对自定义对象的参数执行类似的操作。
答案 0 :(得分:3)
Javassist允许您编写可以用Java编写的任何内容(v1.4)。此外,它还为您提供了一些makro命令。如果要创建组对象,则根据其构造函数,它看起来像:
"myFunction(new Group((Student[]) $args[0], Integer.valueOf((Integer) $args[1])));"
请注意,Javassist不会自动对您的值进行装箱或取消装箱。 $args
读取的任何值都已加框并且类型为Object
。这很可能是您正在观察的问题。