【问题标题】:Can we generate *.class files using annotations我们可以使用注释生成 *.class 文件吗
【发布时间】:2013-11-20 04:25:14
【问题描述】:

我只是想知道,我们可以使用注释处理器生成 .class 文件而不将它们放在源文件中吗?

例如。

Lombak 中,我们只是为字段设置@Getter、@Setter。但是如何在不修改源文件的情况下将方法注入到类文件中。

您能否提供一个示例,比如他们是如何做到的?

我可以获得示例,如何使用注释创建新文件。但是,如果不在源文件中添加任何东西,我应该如何让编译器知道并且在 java 文件中有一个 getter 方法可用。

【问题讨论】:

    标签: java annotations lombok


    【解决方案1】:

    Lombok 所做的有点 hacky,而且比 annotation processing 复杂得多。注释处理器只需调用语法树的成员并生成一个新文件(通常是 Java 源文件)。

    像 Lombok 那样修改现有的类是相当困难的。它由 transforming the AST 工作,这超出了正常 APT 的范围。

    【讨论】:

      【解决方案2】:

      您始终可以自己写出.class 文件,但这些注释通常的工作方式是注释处理器生成然后编译的源文件。编译器一直循环,直到一次没有更多的源文件生成,然后结束。

      为了增强现有类,创建 AspectJ 类型间声明是常用的方法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-31
        • 1970-01-01
        • 2013-04-01
        • 2020-03-10
        • 1970-01-01
        相关资源
        最近更新 更多