我需要使用 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
当尝试清空带有 void 返回类型的方法时,我遇到了相同的错误。浏览 Google 和文档,我无法弄清楚如何在不插入某种代码的情况下清空正文,而且我不想无缘无故地添加任意代码。
最佳答案
Javassist 用有效的 block 替换方法体作为方法体。非语句不是有效的 block 。您可以将 { }
设置为作为 block 的方法主体。或者,您也可以使隐式 return;
语句显式化。
对于构造函数,总是需要首先调用 super 构造函数或辅助构造函数。空 block 无效。
关于java - 如何使用 javassist 删除方法或构造函数的主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811085/