首页 > 学院 > 开发设计 > 正文

java 注解

2019-11-14 21:19:33
字体:
来源:转载
供稿:网友
View Postjava 注解

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

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

*******************************************************************************@Retention用于描述Annotation的生命周期取值有:java.lang.annotation.RetentionPolicySOURCE:源文件有效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@Inheritedpublic @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();返回直接存在于此元素上的所有注释。与此接口中的其他方法不同,该方法将忽略继承的注释。(如果没有注释直接存在于此元素上,则返回长度为零的一个数组。)该方法的调用者可以随意修改返回的数组;这不会对其他调用者返回的数组产生任何影响。*******************************************************************************

图片来源于网络


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表