注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

让一切都逝去吧

排骨炖泥菜/猪肝炒苹果/鱼籽狗肉汤/狗头薏米汤

 
 
 

日志

 
 

java 注解  

2013-02-24 13:37:56|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
写注解包括三个环节 
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)
 
这个方法判断一个类是否被注解所标识

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 
{  
}

获得注解
MyAnnotation an = 标识注解的类.class.getAnnotation(MyAnnotation.class)
如果是对象的话就是
对象实例.getClass().getAnnotation(MyAnnotation.class)
这个注解是空的,如果注解还有属性配置的话,就用“注解对象实例.属性”,来获得被标注的属性值。
  评论这张
 
阅读(663)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018