龙目岛如何在现有类上生成代码?

2022-09-03 01:33:53

我可以使用注释处理器从头开始生成类,但我无法像龙目岛那样修改类。我已经在Android工作室中搜索了龙目岛生成的类,但是我什么也没找到。然后我通过他们的网站检查了龙目岛概述,并在论坛上进行了调查,但我最终没有任何东西。我的问题其实很简单。例如,龙目岛如何将生成的代码与地雷统一起来,而我使用@Setter。如何开发这样的处理器?


答案 1

看起来像是龙目岛如何工作?的副本,我会标记为关闭为欺骗,但你的赏金阻止了它。

简而言之,龙目岛实际上根本不生成代码。相反,它使用未指定和未记录的内部编译器实现 API 调用,在读取源代码和输出已编译的字节码之间直接修改程序的抽象语法树。它可能会在没有警告或通知的情况下在更新到新的编译器版本时中断,但目前没有其他方法。


答案 2

龙目岛在编译阶段生成代码。这是该 http://hannesdorfmann.com/annotation-processing/annotationprocessing101 的教程。

如果您不熟悉声明自己的注释,我强烈建议您开始使用运行时注释。它们更易于理解和调试,并且您的代码在您已经熟悉的运行时阶段“起作用”。一个简短的教程:http://docs.oracle.com/javase/1.5.0/docs/guide/language/annotations.html


推荐