用 Java 操纵 Java 类

Manipulating Java classes with Java

我想操纵 Java classes(扩展名 java 而不是 .class)这样我就可以 :

有没有 API 可以做到这一点?

到目前为止我所做的是尝试像处理文本文件一样操作 .java 文件(使用 regexFileUtils 等)。

问候。 我

如果你只想临时修改类(即在jvm的范围内),那么你可以用反射来做:

What is reflection and why is it useful?

如果您要永久使用 altering/creating 源代码,那么最好使用 IDE 来完成。大多数 IDE 会告诉您未实现的方法并提供自动完成来创建它们。他们还将格式化源代码,删除未使用的导入等。

是的,您可以使用 java 反射 api。请检查 here

稍后编辑:要更新 class 结构,您可以使用 javassist. Here 您有一个示例。

您可以查看使用 Eclipse JDT 项目中的 AST(抽象语法树)工具。

有一个教程可以帮助您开始使用 Vogella:Eclipse JDT - Abstract Syntax Tree (AST) and the Java Model - Tutorial

您可以使用正则表达式,接下来的问题是什么是正则表达式(以及还有哪些其他选项!)

正则表达式可能不太适合这个,例如,当涉及到另一个它们不太适合的任务时,例如解析 XML,人们说不要这样做,使用 XML 解析器,但在这种情况下,如果您发现缺少用于解析 java 源代码的工具,那么正则表达式可能是最佳选择。