我想知道是否已经有一个以编程方式编写java类或方法的库?
我正在寻找能够将新源代码写入现有文件或扩展已存在文件的库。
答案 0 :(得分:10)
查看Eclipse JDT。
Eclipse Java开发工具(JDT)提供了访问和操作Java源代码的API。它允许访问工作区中的现有项目,创建新项目以及修改和读取现有项目。
更具体地说,您可以创建新的Java元素,例如使用Java Model API的项目,包,类,然后您可以创建/修改类型的内容,例如方法,通过AST的语句(Abstract Syntax Tree)
答案 1 :(得分:2)
你想要的是program transformation system。这些工具读取源代码,构建编译器数据结构,让您在这些结构上编写自定义分析器/转换代码,并吐出与编译器数据结构相对应的源代码;这为您提供了“扩展文件”功能。通过简单地构建相应的编译器数据结构然后吐出相应的代码来完成新的代码生成。
我们的DMS Software Reengineering Toolkit就是这样一个系统。它读取Java源代码,构建编译器数据结构,如抽象语法树和符号表(它可以构建控制流图,调用树和数据流),让您使用过程代码爬过这些结构,或者编写“源到源”转换“使用目标的表面语法(在本例中为Java)语言,然后它可以从这些编译器数据结构生成有效的Java代码。
它已被用于实现各种Java分析和转换工具,您可以看到该网站。最容易理解的是using program transformations to build a test coverage tool。
答案 2 :(得分:1)
使用Apache Byte Code Engineering Library非常令人兴奋,尽管它与Java源代码操作不同。
但是,您可以将其用于:
定位JVM的自定义语言(如Scala)通常使用字节码操作来生成Java类。
通过一些努力,您可以扩展此库以执行“元编程”:在运行时编写Java源代码。