用 Java 操纵 Java 类
Manipulating Java classes with Java
我想操纵 Java classes(扩展名 java
而不是 .class
)这样我就可以 :
删除一个class的所有方法(保留构造函数)
添加未实现的方法
删除未使用的导入
...
有没有 API 可以做到这一点?
到目前为止我所做的是尝试像处理文本文件一样操作 .java
文件(使用 regex
、FileUtils
等)。
问候。
我
如果你只想临时修改类(即在jvm的范围内),那么你可以用反射来做:
What is reflection and why is it useful?
如果您要永久使用 altering/creating 源代码,那么最好使用 IDE 来完成。大多数 IDE 会告诉您未实现的方法并提供自动完成来创建它们。他们还将格式化源代码,删除未使用的导入等。
是的,您可以使用 java 反射 api。请检查 here
您可以查看使用 Eclipse JDT 项目中的 AST(抽象语法树)工具。
有一个教程可以帮助您开始使用 Vogella:Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model - Tutorial
您可以使用正则表达式,接下来的问题是什么是正则表达式(以及还有哪些其他选项!)
正则表达式可能不太适合这个,例如,当涉及到另一个它们不太适合的任务时,例如解析 XML,人们说不要这样做,使用 XML 解析器,但在这种情况下,如果您发现缺少用于解析 java 源代码的工具,那么正则表达式可能是最佳选择。
我想操纵 Java classes(扩展名 java
而不是 .class
)这样我就可以 :
删除一个class的所有方法(保留构造函数)
添加未实现的方法
删除未使用的导入
...
有没有 API 可以做到这一点?
到目前为止我所做的是尝试像处理文本文件一样操作 .java
文件(使用 regex
、FileUtils
等)。
问候。 我
如果你只想临时修改类(即在jvm的范围内),那么你可以用反射来做:
What is reflection and why is it useful?
如果您要永久使用 altering/creating 源代码,那么最好使用 IDE 来完成。大多数 IDE 会告诉您未实现的方法并提供自动完成来创建它们。他们还将格式化源代码,删除未使用的导入等。
是的,您可以使用 java 反射 api。请检查 here
您可以查看使用 Eclipse JDT 项目中的 AST(抽象语法树)工具。
有一个教程可以帮助您开始使用 Vogella:Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model - Tutorial
您可以使用正则表达式,接下来的问题是什么是正则表达式(以及还有哪些其他选项!)
正则表达式可能不太适合这个,例如,当涉及到另一个它们不太适合的任务时,例如解析 XML,人们说不要这样做,使用 XML 解析器,但在这种情况下,如果您发现缺少用于解析 java 源代码的工具,那么正则表达式可能是最佳选择。