通俗讲解Annotation注解(反射注解)

给编译器看的注释——Annotation

java.lang.annotation,接口Annotation。


Annotations提供一些本来不属于程序的数据,比如:一段代码的作者或者告诉编译器禁止一些特殊的错误。An annotation 对代码的执行没有什么影响。Annotations使用@annotation的形式应用于代码:类(class),属性(attribute),方法(method)等等。一个Annotation出现在上面提到的开始位置,而且一般只有一行,也可以包含有任意的参数。

建一个注解的话就新建一个Annotation, 使用注解的时候直接把注解名添加到要测试的方法上方就行了. 例如建一个注解:  新建一个类MyAnno,里面有一个方法,那么MyAnno类就成了一个注解

<span style="font-size:18px;">public @interface MyAnno{ 

 }  </span>

想在另一个类test中使用上面这个注解MyAnno的时候, 就这么用: 

<span style="font-size:18px;">class test{
      @MyAnno
       a(){
       }
 }</span>

上面只是简单的示范, 下面做个例子——我们自己定义一个注解DbInf, 当我们还没写DbInf类的时候, 当然会报错了,如下:



下面我们就来写DbInf类:注解类里面的属性看上去有些诡异——要带括号, 代码如下:



注意: 属性类型只能是基本类型, String, Class, 枚举, 注解,以及以上类型的一维数组, 不能是其他类型例如Date类型
这样上面的ConnectionUtil类就不会报错了.

我们还可以在username里写上default, 默认值是root,
(注:default——默认值)



这样,下面就可以省略username属性了, 如果不写上面的default, 下面也不写username的话, 就会报错;



现在再接着说文章一开头时的MyAnno类, 此时的MyAnno可以添加在任何方法, 变量和类的上方, 因为这时候的MyAnno没有被限制, 如果给它加限制,就不能到处使用了. 比如,这里使用ElementType.METHOD给它限制;

<span style="font-size:18px;">@Target(ElementType.METHOD) 
public @interface MyAnno{ 


 }</span>

那么, 注解MyAnno只能作用在类里面的的方法上,不能作用在变量和类上


ElementType.METHOD: 只能作用在方法上 
ElementType.FIELD: 只能作用在字段上
ElementType.TYPE: 只能作用在类上(或接口上)

常用以上3个范围,(实际ElementType变量一共有7种范围)

这3个可以同时使用, 如:  
<span style="font-size:18px;">@Target(ElementType.METHOD, ElementType.FIELD, ElementType.TYPE)
 public @interface MyAnno{ 
 }</span>

我们还可以反射出注解:



==========================================================================================


以下截图来自百度知道,关于Annotation反射注解的回答,我看标的简明扼要,就摘了过来。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值