反射注解笔记

注解

什么注解?


注解:annotation(标识,标签),从Java5开始支持注解


注解能干什么?


注解是贴在java程序元素上面


程序元素:类,方法,字段,方法参数,接口,构造函数,枚举


注解贴在程序上面有什么用?


在反射的时候,动态可以获取字节码,方法,字段等等程序元素,获取了这些程序元素,那么就能获取程序元素上贴的注解。这些注解会参与程序运行提供比较的相关信息和数据

 

枚举是一个特殊类

注解是一个特殊的接口,所有的注解都继承自java.lang.annotation这个接口。

完整的注解(从编写到最终运行)需要三方面的参与。

1.需要定义一个注解。

2.需要一个被贴的程序元素(类,方法,字段,构造器等)

3.第三方程序的支持(赋予我注解的特殊功能)

JDK中内置的注解

1.@Override 限定覆写父类方法

2.@Deprecated标记已过时的成员,被标记的方法不推荐使用.


问题1:有的注解可以贴在类上,方法上,字段上,有的却只能贴在类上

问题2:有的注解可以有一个或者多个参数,有的却不行。

JDK中的元注解

注解:贴在程序元素上面的标签

元注解:注解的注解(贴在注解上面的注解)

元注解主要用于限定当前的注解能够贴在哪儿?能够保留在哪个阶段(程序执行三个阶段

源代码阶段,字节码阶段,JVM中)

@Retention:表示注解可以保存在哪一个时期.

保存的时期的值,封装在RetentionPolicy枚举类中

@Target:表示注解可以贴在哪些位置(类,方法上,构造器上等等).

位置的常量封装在ElementType枚举类中:

ElementType.ANNOTATION_TYPE只能修饰Annotation

ElementType.CONSTRUCTOR只能修饰构造方法

ElementType.FIELD只能修饰字段(属性),包括枚举常量

ElementType.LOCAL_VARIABLE只能修饰局部变量

ElementType.METHOD只能修饰方法

ElementType.PACKAGE只能修饰包(极少使用)

ElementType.PARAMETER只能修饰参数

ElementType.TYPE只能修饰类,接口,枚举

自定义注解

1. 定义一个注解


语法:注解关键字 @Interface 


2.被贴的程序元素

3.第三方程序参与赋予注解功能(反射程序)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是注解(Annotation):Annotation(注解)就是Java提供了一种元程序中的元素关联任何信息和...
    九尾喵的薛定谔阅读 8,458评论 0 2
  • 从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在...
    CarlosLynn阅读 3,666评论 0 2
  • 一、概念   Annotation(注解)就是Java提供了一种源程序中的元素关联任何信息和任何元数据(metad...
    从菜鸟到老菜鸟阅读 6,488评论 0 2
  • 从JDK5开始,Java增加了Annotation(注解),Annotation是代码里的特殊标记,这些标记可以在...
    lay_wn阅读 4,361评论 0 1
  • 前言 现在在我们构建自己或公司的项目中,或多或少都会依赖几个流行比较屌的第三方库,比如:Butter Knife、...
    戴定康阅读 9,351评论 0 17