八、关于注解:元注解的种类、继承java.lang.Annotation、注解的基础类型、注解的常用方法

部分参考资料:https://blog.csdn.net/javazejian/article/details/71860633#%E6%B3%A8%E8%A7%A3%E4%B8%8D%E6%94%AF%E6%8C%81%E7%BB%A7%E6%89%BF

元注解(修饰注解的注解)的种类:

1.@Retention

1)属性value ,配置枚举RetentionPolicy类型的值

2)RetentionPolicy有3个值:CLASS,RUNTIME,SOURCE

RetentionPolicy.RUNTIME表示注解的信息被保留在class文件(字节码文件)中当程序编译时,会被虚拟机保留在运行时, 所以他们可以用反射的方式读取。

RetentionPolicy.CLASS表示注解的信息编译期被保留在class文件(字节码文件),但在运行时不会被虚拟机读取。

RetentionPolicy.SOURCE表示注解的信息会被编译器抛弃,不会留在class文件,注解的信息只会留在源文件。

 

2.@Target

1)属性value,配置枚举ElementType类型的值

可选值有:ANNOTATION_TYPE,CONSTRUCTOR,FIELD,LOCAL_VARIABLE,METHOD,PACKAGE,PARAMETER,TYPE

 

3.@Document注解

用于指定被该元注解修饰的Annotation类将被javadoc工具提取成文档。

@Documented注解必须要和策略为RUNTIME的@Retention注解一起使用,默认情况下,javadoc是不包括注解。

4.@Inherited注解

通过使用@Inherited,可以让子类Class对象使用getAnnotations()获取父类被@Inherited修饰的注解。

 

继承java.lang.Annotation

注解是不支持继承的,不能使用关键字extends来继承某个@interface,但注解在编译后,编译器会自动继承java.lang.annotation.Annotation接口

 

注解的基础类型

1.所有的基本类型(int、float、boolean、byte、double、char、long、short)

2.String 2.Class 3.enum 4.Annotation 5.上述类型的数组

 

注解通常搭配反射来使用的常用方法

Java在java.lang.reflect 反射包下新增了AnnotatedElement接口,它主要用于表示目前正在 VM 中运行的程序中已使用注解的元素,通过该接口提供的方法可以利用反射技术地读取注解的信息。

1.getAnnotation(Class<A> annotationClass) 存在返回指定类型的注解。

2.getAnnotations() 返回此元素上存在的所有注解,包括从父类继承的。

3.isAnnotationPresent(Class<? extends Annotation> annotationClass) 如果指定类型的注解存在于此元素上,则返回 true,否则返回 false。

4.getDeclaredAnnotations()返回直接存在于此元素上的所有注解,注意,不包括父类的注解,调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响,没有则返回长度为0的数组。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值