如何使用javassist删除方法或构造函数的主体?

时间:2015-04-22 23:56:09

标签: java javassist

我需要使用javassist库删除带有void返回类型的构造函数和方法体。以下作品。

ctClass.getConstructors()[0].setBody("int i = 0");

但这不是

ctClass.getConstructors()[0].setBody("");

相反,我得到了这个例外

compile error: syntax near ""

当我尝试

ctClass.getConstructors()[0].setBody(null);

我得到了

compiler error: no such a constructor

尝试清空带有返回类型的方法时,我得到了同样的错误。通过谷歌和文档,我无法弄清楚如何在不插入某种代码的情况下清空身体,我不想无缘无故地添加任意代码。

1 个答案:

答案 0 :(得分:3)

Javassist将方法体替换为有效块作为方法体。非语句不是有效块。您可以将{ }设置为方法体,即块。或者,您也可以显式隐式return;语句。

对于构造函数,始终需要首先调用超级构造函数或辅助构造函数。空块无效。