我需要使用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
尝试清空带有返回类型的方法时,我得到了同样的错误。通过谷歌和文档,我无法弄清楚如何在不插入某种代码的情况下清空身体,我不想无缘无故地添加任意代码。
答案 0 :(得分:3)
Javassist将方法体替换为有效块作为方法体。非语句不是有效块。您可以将{ }
设置为方法体,即块。或者,您也可以显式隐式return;
语句。
对于构造函数,始终需要首先调用超级构造函数或辅助构造函数。空块无效。