AbstractProcessor 方法介绍

2019-07-20  本文已影响0人  子丿龙

1. void init(ProcessingEnvironment processingEnv)

该方法主要用于一些初始化的操作,通过该方法的参数ProcessingEnvironment可以获取一些列有用的工具类。其内部各方法解释如下:

    /**
     * 返回用来在元素上进行操作的某些实用工具方法的实现。<br>
     *
     * Elements是一个工具类,可以处理相关Element(包括ExecutableElement, PackageElement, TypeElement, TypeParameterElement, VariableElement)
     */
    Elements getElementUtils();

    /**
     * 返回用来报告错误、警报和其他通知的 Messager。
     */
    Messager getMessager();

    /**
     *  用来创建新源、类或辅助文件的 Filer。
     */
    Filer getFiler();

    /**
     *  返回用来在类型上进行操作的某些实用工具方法的实现。
     */
    Types getTypeUtils();

    // 返回任何生成的源和类文件应该符合的源版本。
    SourceVersion getSourceVersion();

    // 返回当前语言环境;如果没有有效的语言环境,则返回 null。
    Locale getLocale();

    // 返回传递给注释处理工具的特定于 processor 的选项
    Map<String, String> getOptions();

2. SourceVersion getSupportedSourceVersion()

返回此注释 Processor 支持的最新的源版本,该方法可以通过注解@SupportedSourceVersion指定。

3. Set<String> getSupportedAnnotationTypes()

返回此 Processor 支持的注释类型的名称。结果元素可能是某一受支持注释类型的规范(完全限定)名称。它也可能是 ” name.” 形式的名称,表示所有以 ” name.” 开头的规范名称的注释类型集合。最后,自身表示所有注释类型的集合,包括空集。注意,Processor 不应声明 “*”,除非它实际处理了所有文件;声明不必要的注释可能导致在某些环境中的性能下降。

4. boolean process(Set<? extends TypeElement> set, RoundEnvironment roundEnvironment)

注解处理器的核心方法,处理具体的注解。主要功能基本可以理解为两个

5. getSupportedSourceVersion和getSupportedAnnotationTypes也可以通过给自定义的注解处理器类上添加注解指定具体值。

如下:

    @SupportedOptions()
    @SupportedAnnotationTypes()
    @SupportedSourceVersion(SourceVersion.RELEASE_8)
    public class ButterKnifeProcessor extends AbstractProcessor {
        // 省略具体代码
    }
上一篇下一篇

猜你喜欢

热点阅读