注解 元注解

Java5开始,Java开始对元数据的支持,也就是Annotation(注解/标签)
元数据:metadata:描述数据的数据


所有的Annotation都java.lang.annotation.Annotation接口的子接口,所以Annotation是一种特殊的接口(枚举也是特殊的类);
@interface Override { } ----> interface Override extends java.lang.annotation.Annotation { }

所有的枚举类都是java.lang.Enum类的子类
enum Gende { } ----> class Gender extends java.lang.Enum { }

注解被用来为程序元素(类,方法,成员变量等)设置元数据。
注解,标签,Annotation都是一体。


使用注解需要注意,必须有三方参与才有意义
1、得有注解标签;
2、被贴的程序元素(类,字段,构造器,方法等);
3、由第三方的程序来赋予注解特殊的功能(也就是Java代码);

JDK中内置的注解:

@Override 限制覆写父类方法
@Deprecate 标记已过时,不推荐使用在JDK1.5之前,使用文档注释来标记已过时;
@SuppressWarings 抑制编译器发出警告
@SuppressWarings(value=“all”)
@SafeVarargs 抑制堆污染警告(Java7开始出现的)该注解仅仅是抑制住编译器不要报警告,但是存在的风险依然存在,仅仅是不提示了而已


使用注解:

解释为什么又的注解可以贴在类上/方法上/变量上,而有些却不行。
解释为什么有的注解可以接受参数,比如@SupppressWarings(value=“all”),而有的注解却不行:可以通过查看注解的源代码,发现注解中存在抽象方法才可以使用参数
在这里插入图片描述

元注解:

注解的注解
@Retention:表示注解可以保存在哪一个时期,保存的时期的值,封装在RetentionPolicy枚举类中:

  • 注意:一般的,自定义的注解,使用RUNTIME。(使用反射赋予注解功能)
    SOURCE:注解只能存在于源文件中,编译之后,字节码文件中没有
    CLASS:注解可以存在于源文件和字节码文件中,一旦加载进JVM,在JVM中不存在
    RUNTIME:注解可以存在于源文件,字节码文件,JVM中

@Target:表示注解可以贴在那些位置(类,方法,构造器上等等)。位置的常量封装在ElementType枚举类中:
1、ElementType.ANNOTATION_TYPE只能修饰Annotation
2、ElementType.CONSTRUCTOR只能修饰构造方法
3、ElementType.FILED只能修饰字段(属性),包括枚举常量
4、ElementType.LOCAL)VARIABLE只能修饰局部变量
5、ElementType.METHOD只能修饰方法
6、ElementType.PACKAGE只能修饰包(极少使用)
7、ElementType.PARAMETER只能修饰参数
8、ElementType.TYPE只能修饰类,接口,枚举
@Documented:使用@Documented注解会保存到API文档中;
@Inherited:标注的标签可以被子类所继承;

获取程序元素上的注解

注解可以贴在类(class)上,方法(method)上,字段(Filed)上,构造器(Constructor)上等;
所以在Class,Method,Filed,Contructor,类中就拥有获取注解的API。
Annotation getAnnotation(Class annotationClass)
如果存在元素的指定类型的注解,则放回这些注解,否则返回null
Annotation[ ] getAnnotations() 返回此元素上存在的所有注解;
Annotation[ ] isAnnotationPresent(Class annotationClass)
判断当前成员上是否标注了某一个注解

写一个注解:

需求编写一个注解,像@Before,@After,@Test

在这里插入图片描述
1、先写一个标签
在这里插入图片描述
2、程序
在这里插入图片描述
3、第三方程序:给标签功能
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值