自定义注解(二)

1. 首先来看元注解@Target

定义注解可使用的范围
有哪些范围呢?

    TYPE,					//用在类上
    FIELD, 				//字段
    METHOD,				//方法
    PARAMETER,				//参数
    CONSTRUCTOR,			//构造方法
    LOCAL_VARIABLE,		//局部变量
    ANNOTATION_TYPE,		//注解
    PACKAGE,				//包
    TYPE_PARAMETER,		//形参
    TYPE_USE			//任何地方 不使用@Target默认是这个

示例一:定义了只能用在字段上
作者:Z-AI
用在字段上没报错,用在了类上报错了

作者:Z-AI
示例二:定义在类上使用
作者:Z-AI
类上的正常,字段上的报错了
作者:Z-AI

2.@Retention

定义注解的生命周期(存在的范围)
一共有三个

SOURCE	//源文件
CLASS		//字节码
RUNTIME	//运行时

这里只先证明SOURCE和CLASS,后面证明需要用到反射,等后面就会发出来
作者:Z-AI
作者:Z-AI
这里我们用一个java反编译工具

作者:Z-AI
把MyAnnotationTest字节码直接拖出来,发现没有注解
作者:Z-AI

证明CLASS

更改生命周期为CLASS
作者:Z-AI
再把字节码拖进去看看,发现有注解了
作者:Z-AI

3.@Documented

这个需要导出文档就不演示了,导出文档已经写了一篇文章了

4.@Inherited

使用@Inherited定义的注解具备继承性
什么意思?
A类写的注解,B类都会继承
如何证明?
要用反射,后面写反射会讲

@Inherited
//这里
class A{}
class B extends A{}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值