调用Javassist中的方法,这些方法将对象作为参数



我有以下类结构-

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]);}}");

我想对作为自定义对象的参数执行类似的操作。

Javassist可以让你用Java(v1.4)编写任何东西。此外,它还提供了一些makro命令。如果你想创建一个组对象,取决于它的构造函数,它看起来像:

"myFunction(new Group((Student[]) $args[0], Integer.valueOf((Integer) $args[1])));"

请注意,Javassist不会自动装箱或取消装箱您的值。由$args读取的任何值都是装箱的并且是Object类型。这很可能是你观察到的问题。

相关内容

  • 没有找到相关文章