以编程方式编写Java

我想知道是否已经有一个以编程方式编写java类或方法的库?

我正在寻找能够将新源代码写入现有文件或扩展已存在文件的库。

看看Eclipse JDT 。

Eclipse Java开发工具(JDT)提供了访问和操作Java源代码的API。 它允许访问工作区中的现有项目,创建新项目以及修改和读取现有项目。

更具体地说,您可以使用Java Model API创建新的Java元素,例如项目,包,类,然后您可以通过AST( 抽象语法树 )创建/修改类型的内容,例如方法,语句

你应该看到这篇文章和本教程 。

你想要的是一个程序转换系统 。 这些工具读取源代码,构建编译器数据结构,让您在这些结构上编写自定义分析器/转换代码,并吐出与编译器数据结构相对应的源代码; 这为您提供了“扩展文件”function。 通过简单地构建相应的编译器数据结构然后吐出相应的代码来完成新的代码生成。

我们的DMS软件再造工具包就是这样一个系统。 它读取Java源代码,构建编译器数据结构,如抽象语法树和符号表(它可以构建控制流图,调用树和数据流),让您使用过程代码爬过这些结构,或者编写“源到源”转换“使用目标的表面语法(在本例中为Java)语言,然后它可以从这些编译器数据结构生成有效的Java代码。

它已被用于实现各种Java分析和转换工具,您可以看到该网站。 最容易理解的是使用程序转换来构建测试覆盖率工具 。

Apache Byte Code Engineering Library非常令人兴奋,尽管它与Java源代码操作不同。

但是,您可以使用它来:

  • 检查现有的字节码;
  • 修改现有的字节码;
  • 生成字节码并运行它。

针对JVM的自定义语言(如Scala)通常使用字节码操作来生成Java类。

通过一些努力,您可以扩展此库以执行“元编程”:在运行时编写Java源代码。