赞
踩
APT:英文全名(Annotation Processor Tool),即:注解处理器。它是 javac 的一个工具,这是Sun为了帮助注解的处理过程而提供的工具,apt被设计为操作Java源文件,而不是编译后的类。
作用阶段示意图如下:
第一步:定义注解
- package com.wustyq.demo01;
-
- import java.lang.annotation.ElementType;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
- import java.lang.annotation.Target;
-
- /**
- * ClassName: tb_person <br/>
- * Description: <br/>
- * date: 2021/9/5 17:32<br/>
- *
- * @author yiqi<br />
- * @since JDK 1.8
- */
- @Target(ElementType.TYPE)
- @Retention(RetentionPolicy.RUNTIME)
- public @interface tb_person {
- String name();
- String id();
- int age();
- }
第二步:定义使用注解的测试类
- package com.wustyq.demo01;
-
- /**
- * ClassName: Person <br/>
- * Description: <br/>
- * date: 2021/9/5 17:36<br/>
- *
- * @author yiqi<br />
- * @since JDK 1.8
- */
- @tb_person(name="person",id="123456",age=16)
- public class Person {
-
- }
第三步:定义注解处理器
- package com.wustyq.demo01;
-
- import javax.annotation.processing.AbstractProcessor;
- import javax.annotation.processing.RoundEnvironment;
- import javax.lang.model.element.TypeElement;
- import javax.tools.Diagnostic;
- import java.util.Set;
-
- /**
- * ClassName: myAnnotationHandler <br/>
- * Description: <br/>
- * date: 2021/9/5 17:46<br/>
- *
- * @author yiqi<br />
- * @since JDK 1.8
- */
- public class myAnnotationHandler extends AbstractProcessor {
- @Override
- public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
- System.out.println("=========");
- processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE,"********");
- return false;
- }
- }
第四步:运行
运行一定要分为两步:
所以我们先将注解类和注解处理器类进行编译
javac com\wustyq\demo01\myAnnotationHandler.java com\wustyq\demo01\tb_person.java
接下来进行编译我们的测试类,此时在编译时需要加上processor参数,用来指定相关的注解处理类。
javac -processor com.wustyq.demo01.myAnnotationHandler com\wustyq\demo01\Person.java
可能出现的报错情况:
两个原因:
这是因为你在写注解处理器的时候没有指定 版本 和 处理哪一类的注解,解决方法如下:
- @SupportedSourceVersion(SourceVersion.RELEASE_8)
- @SupportedAnnotationTypes("com.wustyq.demo01.tb_person")
记住,把这些东西都加进去之后类要重新编译,不然你改了和没改一样
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。