java注解的概念理解

1. 注解(标注)概念:从字面意思理解是对被标注的对象(类,接口,枚举,注解类,方法,参数)的一个标记,有这个标记有什么用呢?就像学习中“划重点”的方式一样,被标记的对象肯定是特殊需要特别关照的对象,在使用时能快速找到的对象,这就是注解的意思。如果还是有点懵,那就只需要记住,凡是被标注的对象都是特殊的。

例子1:就像建筑工地的楼一样,在一片地方正在建造的楼有很多,但其中每楼每户都是被标注过的,标注他们的注解是:单元号、门牌号,所以以后通过单元号、门牌号就能轻易找到它们。

例子2:世界上有很多人,而每个人都有自己的名字,而名字就是这个人的注解,因为通过这个名字就可以找到这个人。

-注解标注的对象有时是具体的如例子1,例子2. 也可以是一类的:

例子3:人大概可以分为三种肤色(注解/标注):白种人,黄种人,黑种人,所以通过各自的肤色(注解/标注)就可以找到对应的这一类人。

2.注解的用途:这个问题要配合元注解说明:元注解:用来标注注解的注解,用来配置这个注解的基本属性:@Target(ElementType...)此注解的标注范围,用在哪里(类,接口,枚举,注解类,方法,参数),   @Retention(RetentionPolicy...)此注解什么时候有效。

  -元注解 有效期配置:@Retention(RetentionPolicy.SOURCE):注解将被编译器丢弃(该类型的注解信息只会保留在源码里,源码经过编译后,注解信息会被丢弃,不会保留在编译好的class文件里

    使用场景:用来让读源码的人看的(个人猜想),其他作用还没发现

  -元注解  有效期配置:@Retention(RetentionPolicy.CLASS):注解在class文件中可用,但会被VM丢弃(该类型的注解信息会保留在源码里和class文件里,在执行的时候,不会加载到虚拟机中),请注意,当注解未定义Retention值时,默认值是CLASS,如Java内置注解,@Override,@Deprecated、@SuppressWarnning等

    使用场景:编译器使用的

  -元注解  有效期配置:@Retention(RetentionPolicy.RUNTIME):注解信息将在运行期(JVM)也保留,因此可以通过反射机制读取注解的信息(源码、class文件和执行的时候都有注解的信息),如SpringMvc中的@Controller、@Autowired、@RequestMapping等。  

    使用场景:通过java反射机制获取到此注解中的参数内容,或此注解标注过的对象,用于做不同的业务处理。

原文地址:https://www.cnblogs.com/li-yan-long/p/10454995.html