我有一个操作生成类的 Java 字节码的后编译步骤。我想让图书馆消费者的生活尽可能轻松,所以我正在寻找可以使这个过程自动化并且(如果可能的话)编译器不可知的方法。
Annotation Processing API提供了许多所需的特性(自动服务发现;由 Eclipse 支持)。不幸的是,这是针对代码生成器的,不支持对现有人工制品的操作:
该工具的初始输入被认为是由第零轮创建的;因此,尝试创建与这些输入之一对应的源文件或类文件将导致 FilerException。
API 推荐的装饰器模式不是一个选项。
我可以看到如何使用运行时代理/仪器执行该步骤,但这是比手动构建步骤更糟糕的选择,因为它需要任何被 API 接触的人以不明显的方式配置他们的 JVM。