频道栏目
首页 > 程序开发 > 软件开发 > Java > 正文
@深入注解,在Java中设计和使用自己的注解
2012-02-07 19:06:10      个评论      
收藏   我要投稿
我们用过JDK给我们提供的  @Override  @Deprecated @SuppressWarning 注解  ,这些注解是JDK给我们提供的,我们只是在用别人写好的东西,那么我们是否可以自己写注解呢?当然是可以的  。
我们写的注解包括三个环节
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类有一个 方法
 
<A extends Annotation>
A        getAnnotation(Class<A> 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

}

摘自 yue7603835的专栏
点击复制链接 与好友分享!回本站首页
相关TAG标签 中设 注解
上一篇:Java中的注解以及应用 @Deprecated @SupressWarning @Override
下一篇:为Annotation注解添加各种属性
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站