如何使用 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;
语句显式。
对于构造函数,总是需要先调用超级构造函数或辅助构造函数。空块无效。
我需要使用 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;
语句显式。
对于构造函数,总是需要先调用超级构造函数或辅助构造函数。空块无效。