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

如何使用javassist删除方法或构造函数的主体?,java,javassist,Java,Javassist,我需要使用javassist库删除带有void返回类型的构造函数和方法体。下面的工作 ctClass.getConstructors()[0].setBody("int i = 0"); 但事实并非如此 ctClass.getConstructors()[0].setBody(""); 相反,我得到了这个例外 compile error: syntax near "" 当我尝试 ctClass.getConstructors()[0].setBody(null); 我明白了 在尝试清空带

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

ctClass.getConstructors()[0].setBody("int i = 0");
但事实并非如此

ctClass.getConstructors()[0].setBody("");
相反,我得到了这个例外

compile error: syntax near ""
当我尝试

ctClass.getConstructors()[0].setBody(null);
我明白了


在尝试清空带有void返回类型的方法时,我会遇到相同的错误。查看Google和文档,我不知道如何在不插入某种代码的情况下清空主体,我也不想无缘无故地添加任意代码。

Javassist将方法主体替换为有效块作为方法主体。non语句不是有效的块。您可以将
{}
设置为作为块的方法体。或者,您也可以使隐式
返回语句显式


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

为什么需要这样做?那是练习吗?在这种情况下,只要尝试任何有效的组合,因为它的工作!我对构造函数也有同样的想法,即使源代码中没有指定构造函数,字节码中也必须有一个构造函数。。。但是当这些方法以同样的错误失败时,我知道还有更多的东西。
compiler error: no such a constructor