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);

我明白了

compiler error: no such a constructor

当尝试清空带有 void 返回类型的方法时,我遇到了相同的错误。浏览 Google 和文档,我无法弄清楚如何在不插入某种代码的情况下清空正文,而且我不想无缘无故地添加任意代码。

最佳答案

Javassist 用有效的 block 替换方法体作为方法体。非语句不是有效的 block 。您可以将 { } 设置为作为 block 的方法主体。或者,您也可以使隐式 return; 语句显式化。

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

关于java - 如何使用 javassist 删除方法或构造函数的主体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29811085/

相关文章:

java - 使用 Java 代理将类添加到类路径

JAVA KeyEvent序列化错误

java - Hibernate Envers 中的查询性能

java - 为什么我在结果集中间得到 Javassist 对象?

缺少 Javassist 依赖的 jar

java - 如何自动记录日志

Javassist - 如何将行号添加到方法

Java 8 并行流和 ThreadLocal

JavaFX 子类按钮 - 如何使标签更新工作?

java - WSDL 抽象消息与具体消息