码迷,mamicode.com
首页 > 编程语言 > 详细

java 注解

时间:2014-10-14 00:48:07      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   使用   ar   java   strong   

java.lang.annotation包
Annotation的基本原则:Annotation不能影响程序代码的执行,无论增加、删除Annotation,代码都始终如一的执行
元注解:负责注解其他的注解
@Documented
@Inherited
@Retention
@Target
-------------------------------------------------------------------------------
@Target
用于描述Annotatiion的范围
取值有:
java.lang.annotation.ElementType
TYPE:类,接口(包括注解),枚举
FIELD:域(包括枚举常量)
METHOD:方法
PARAMETER:参数
CONSTRUCTOR:构造方法
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解类型
PACKAGE:包
例子:

@Target(ElementType.TYPE)
public String className();
public @interface TargetTest {
}

 


*******************************************************************************
@Retention
用于描述Annotation的生命周期
取值有:
java.lang.annotation.RetentionPolicy
SOURCE:源文件有效
CLASS:在Class文件中有效
RUNTIME:在运行时有效,可通过反射获取内容
例子:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnonitionTargetTest {
}

 


*******************************************************************************
@Documented
用于描述Annotation被JavaDoc
例子:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@@Documented 则
public @interface AnnonitionTargetTest {
}

 


生成javaDoc后调用@AnnonitionTargetTest 的类、方法等会出现@AnnonitionTargetTest,如果没有@Documented 则调用@AnnonitionTargetTest 的类、方法等不会出现@AnnonitionTargetTest
*******************************************************************************
@Inherited
用于描述Annotation可以被继承
如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。
注意:@Inherited annotation类型是被标注过的class的子类所继承。不从接口继承annotation,方法并不从重载的方法继承annotation
例子:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface AnnonitionTargetTest {
}

 


*******************************************************************************
自定义注解
格式:
public @interface 注解名{定义体}
注解参数的可支持数据类型:
1.所有基本数据类型
2.String类型
3.Class类型
4.enum类型
5.Annotation类型
6.以上所有类型的数组
访问修饰符只有public 和default
如果只有一个参数成员,最好把参数名称设为"value",后加小括号
*******************************************************************************
注解处理器类:java.lang.reflect.AnnotatedElement
它的实现类:
java.lang.Class类,java.lang.reflect.Filed类,java.lang.reflect.Constructor类,java.lang.reflect.Method类,java.lang.Package类
<T extends Annotation> T getAnnotation(Class<T> annotationClass); 返回改程序元素上存在的、指定类型的注解,如果该类型注解不存在,则返回null。
Annotation[] getAnnotations();返回该程序元素上存在的所有注解。
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass);判断该程序元素上是否包含指定类型的注解,存在则返回true,否则返回false.
Annotation[] getDeclaredAnnotations();返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。
*******************************************************************************

图片来源于网络

bubuko.com,布布扣

java 注解

标签:style   blog   http   color   io   使用   ar   java   strong   

原文地址:http://www.cnblogs.com/imeng/p/4023125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!