我们用过JDK给我们提供的 @Override @Deprecated @SuppressWarning 注解 ,这些注解是JDK给我们提供的,我们只是在用别人写好的东西,那么我们是否可以自己写注解呢?当然是可以的。
创新互联云计算的互联网服务提供商,拥有超过13年的服务器租用、BGP机房服务器托管、云服务器、网站空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、网站空间、申请域名、VPS主机、云服务器、香港云服务器、免备案服务器等。
我们写的注解包括三个环节:
1、 注解的声明,也就是注解类的定义。
形式如下 @interface 来进行注解的声明。
- package me.test;
- import java.lang.annotation.* ;//导入注解包中所有注解
- @Retention(RetentionPolicy.RUNTIME) //解释如下
- @Target(ElementType.TYPE)//解释如下
- public @interface MyAnnotation
- {
- }
- @Retention(RetentionPolicy.RUNTIME)
指定了注解保留的周期,注解的生命周期有是三个,RetentionPolicy 枚举的三个值代表了三个声明周期,默认是CLASS。
枚举常量摘要 | |
---|---|
CLASS 编译器将把注释记录在类文件中,但在运行时 VM 不需要保留注释。 | |
RUNTIME 编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 | |
SOURCE 编译器要丢弃的注释。 |
@Target(ElementType.TYPE)
这个标识注解应该标在那里ElementType的几个枚举值就代表了,注解应该写在的位置。
CONSTRUCTOR 构造方法声明 |
FIELD 字段声明(包括枚举常量) |
LOCAL_VARIABLE 局部变量声明 |
METHOD 方法声明 |
PACKAGE 包声明 |
PARAMETER 参数声明 |
TYPE 类、接口(包括注释类型)或枚举声明 |
2、 使用了注解的类或者方法。
- @MyAnnotation
- class A
- {
- }
3、 利用反射来操作注解,详细见代码。
Class类有一个方法:
| getAnnotation(Class annotationClass) |
这个方法接受一个注解的字节码参数 ,然后返回这个类所标识的注解对象 ,因为我们标识了一个注解就相当于产生了一个注解对象 。
boolean | isAnnotationPresent(Class extends Annotation> annotationClass) |
这个方法判断一个类是否被注解所标识。
下面是代码示例:
MyAnnotationTest.java中
- package me.test;
- import java.lang.annotation.Annotation;
- @MyAnnotation
- public class MyAnnotationTest
- {
- public static void main(String []args)
- {
- if(MyAnnotationTest.class.isAnnotationPresent( MyAnnotation.class))
- {
- MyAnnotation an=(MyAnnotation)MyAnnotationTest.class.getAnnotation(MyAnnotation.class) ;
- System.out.println(an.toString());
- }
- }
- }
MyAnnotation.java中
- package me.test;
- import java.lang.annotation.ElementType;
- import java.lang.annotation.Retention;
- import java.lang.annotation.RetentionPolicy;
- import java.lang.annotation.Target;
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.TYPE)
- public @interface MyAnnotation
- {
- }
原文链接:http://blog.csdn.net/yue7603835/article/details/7234786
【编辑推荐】
当前文章:深入注解:在Java中设计和使用自己的注解
本文网址:http://www.stwzsj.com/qtweb/news26/15376.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联