聊聊AbstractProcessor和Java编译流程 |
您所在的位置:网站首页 › java类编译过程 › 聊聊AbstractProcessor和Java编译流程 |
各位大佬,能不能随便给我的项目或者之前的文章点个star,苦兮兮。github.com/ 掘金文章 我:我写过一个路由跳转库,我通过了AbstractProcessor生成了路由表的注册类。 面试官: 既然你写过AbstractProcessor,那么我们来聊聊这个吧。 我:OK,放马过来,谁怂谁是狗。 面试官:那么kapt和transform有什么差别啊? 我:AbstractProcessor只能处理注解,然后根据注解通过javapoet生成一个新的java类。而transfrom则是通过gradle插件的transfrom方法,对.class文件做的修改。 面试官:嗯,那么下一个问题,你知道AbstractProcessor是在编译时的哪个环节操作的吗? 我:汪? 面试官:那么我们继续聊聊AbstractProcessor,当获取到的注解之后,如何判断实现了注解的Class是否继承自activity。 我:汪汪汪汪!!!!! 面试官:emmmmmmmm,回家等通知吧。 什么是ProcessorAbstractProcessor是一个抽象类,它的父类是Processer。翻阅了网上大部分文章,基本没有一个很好的对这个类的一个描述。我最后找到了Java的Api Doc文档,其中有对这个类的一些说明。 Processor释义注释处理按照rounds的顺序进行。 在每一轮中,可以向处理器询问process在前一轮产生的源文件和类文件上找到的注释的子集。 第一轮处理的输入是工具运行的初始输入; 这些初始输入可以被视为虚拟第0轮处理的输出。 如果要求处理器在给定轮次上进行处理,则会要求处理后续轮次,包括最后一轮,即使没有要处理的注释。 工具基础结构还可以要求处理器处理由工具的操作隐式生成的文件。 The command-line utility apt, annotation processing tool, finds and executes annotation processors based on the annotations present in the set of specified source files being examined. The annotation processors use a set of reflective APIs and supporting infrastructure to perform their processing of program annotations (JSR 175). The apt reflective APIs provide a build-time, source-based, read-only view of program structure. These reflective APIs are designed to cleanly model the JavaTM programming language's type system after the addition of generics (JSR 14). First, apt runs annotation processors that can produce new source code and other files. Next, apt can cause compilation of both original and generated source files, thus easing the development cycle. 简单的说就是Processor会在编译阶段初始化,然后对当前模块内的代码进行一次扫描,然后获取到对应的注解,之后调用process方法,然后我们根据这些注解类来做一些后续操作。 java的编译流程上图是一张简单的编译流程图,compiler代表我们的javac(java语言编程编译器)。这张图应该中其实缺少了一个流程,在source -> complier的过程中就应该把我们的Processor补充上去。 我写的那个流弊的一塌糊涂的路由库,一个路由库的构成应该是由四个部分构成的。 负责路由跳转的java代码 annotation 注解 AbstractProcessor 负责生成路由表的初始化类 gradle plugin 负责收集生成的注册类,然后插桩我们今天只说Processor。先从接口的方法介绍起把。 变量和类型 方法 描述 Iterable |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |