您的位置:首页 > 编程语言 > Java开发

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

2015-04-11 16:36 176 查看
给编译器看的注释——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反射注解的回答,我看标的简明扼要,就摘了过来。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java