通俗讲解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个可以同时使用, 如:
我们还可以反射出注解:
==========================================================================================
以下截图来自百度知道,关于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反射注解的回答,我看标的简明扼要,就摘了过来。
相关文章推荐
- 实现基于注解(Annotation)的数据库框架(四)注解(Annotation)和反射的结合使用
- 实现基于注解(Annotation)的数据库框架(一)反射的基本了解
- 通过反射获取注解(Annotation)
- Java注解(Annotation)用法:利用注解和反射机制指定列名导出数据库数据
- Java反射API研究(1)——注解Annotation
- 深入理解Java:注解(Annotation)--注解处理器(反射机制)
- Java学习之路0728(十二)(Class类、反射、Annotation功能注解)
- 利用反射自定义注解Annotation
- Java反射学习总结五(Annotation(注解)-基础篇)
- java 注解annotation的使用,以及反射如何获取注解
- java 注解annotation的使用以及反射如何获取注解
- Java注解(Annotation)详解(四)——注解反射生成SQL语句
- 注解_Annotation_内置注解_自定义注解_反射机制读取注解JAVA208-210
- Java反射学习总结五(Annotation(注解)-基础篇)
- 注解(Annotation)自定义注解(四)--编译期注解解析讲解和手写ButterKnife
- Annotation(自定义注解)反射获取注解
- Java反射reflection与注解annotation的应用(自动测试机)
- 使用反射来提取注解annotation
- Java注解(Annotation)详解(四)——注解反射生成SQL语句
- Java反射学习总结五(Annotation(注解)-基础篇)