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

How do I remove the body of a method or constructor with javassist?

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

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

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

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

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