注解的作用
注解是一些数据,在代码中添加在稍后某个时刻可以方便使用,稍后某个时刻分为源代码(SOURCE)、类文件(CLASS)、运行时(RUNTIME),我对source、class、runtime具体的时刻不清楚,但是source早于class,class早于runtime是可以肯定的;
注解最早是用来提供程序无法用java来表达的或是以前必须依赖外部文件的解决方案。
注解运行
注解的处理或者说注解起作用要用注解处理器,一般是获取这个类的CLASS,然后通过反射提供的方法来获取注解信息,如getDeclaredMethods(),getAnnotation(Type.class)等;
java1.8用的是javac命令 ,以前(1.5)用apt命令;
比如1.8中
@SupportedAnnotationTypes(
"annotations.simplest.Simple")
@SupportedSourceVersion(SourceVersion.RELEASE_8)
public class SimpleProcessor
extends AbstractProcessor {
其中@SupportedAnnotationTypes、@SupportedSourceVersion在1.5的老版中只是一个叫AnnotationProcessorFactory接口中的方法,老1.5还有一个AnnotationProcessor接口中的process方法,现在放在了AbstractProcessor 抽象类中。
通过命令可以解析注解类中的信息:
javac -processor annotations.simplest.SimpleProcessor SimpleTest.java
注解的神奇
如果在系统构建的过程中会自动创建一些新的源文件,会检查新生成源文件中注解,然后将所有文件一同编译。
当注解处理器生成一个新的源文件时,该文件件会在新一轮(round,Sun文档中这样称呼它)的注解处理中接受检查。该工具会一轮一轮地处理,直到不再有新的源文件产生为止。然后它在编译所有的源文件。
——引用java编程思想第四版,jdk1.5
Unit注解
Unit注解在java编程思想jdk1.8版本中有提到,大概是注解处理器的PLUS版
Unit注解写的太狠了,暂时看不懂,可以连接到这里看看