【问题标题】:Java: How to write an annotation that adds a default constructor to a classJava:如何编写将默认构造函数添加到类的注释
【发布时间】:2014-02-13 09:42:31
【问题描述】:

问题已经在标题中,它是question I asked earlier 的不太具体的版本:

如何在java中编写一个注解,为类添加默认构造函数?

【问题讨论】:

标签: java annotations


【解决方案1】:

有一个项目已经这样做了:http://projectlombok.org/

从技术上讲,您需要挂钩到 Java 编译器。编译 Java 代码是分阶段完成的:首先,收集所有源代码。然后解析器创建一个 AST。然后代码生成阶段将 AST 转换为字节码。

注释处理器在 AST 构建之后但在生成字节码之前运行。通过修改 AST,可以修改生成的类文件。

此博文包含详细信息:http://notatube.blogspot.com/2010/11/project-lombok-trick-explained.html

据我了解 Lombok,它包含编写由自定义注释触发的附加 AST 转换器的所有工具。

【讨论】:

  • 我真的很喜欢将它放在一个注释中(如您所见,当您点击指向我更具体问题的链接时)。除此之外,我只是想知道它是如何完成的......
  • 查看我添加的博文。简而言之,您在解析器(生成 AST)之后和从 AST 生成字节码之前挂钩到 Java 编译器。通过更改 AST,您可以修改结果。
【解决方案2】:

这通常不受支持,AFAIK。

Project Lombok 做了类似的事情,但它使用了一些 AFAIK 的 hack。

https://blogs.oracle.com/darcy/entry/properties_via_annotation_processing

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-13
    • 2016-06-06
    • 1970-01-01
    • 2015-11-30
    • 2014-10-16
    相关资源
    最近更新 更多