java 注解 java.lang.annotation包结构

java注解基本定义在java.lang.annotation包下

介绍:

为java 编程语言注解设施提供类库支持

描述:这是jdk1.6版本的 annotation 类库结构描述

接口摘要
Annotation 所有 annotation 类型都要扩展的公共接口。

枚举摘要
ElementType 程序元素类型。
RetentionPolicy 注释保留策略。
异常摘要
AnnotationTypeMismatchException 若某个注释的类型在对该注释进行编译(或序列化)后发生了更改,而程序试图访问该注释的元素时,抛出此异常。
IncompleteAnnotationException 若某个注释在编译(或序列化)后将某个注释类型添加到其类型定义中,而程序试图该注释类型的元素时,抛出此异常。
错误摘要
AnnotationFormatError 当注释解析器试图从类文件读取注释并确定注释出现异常时,抛出该错误。
注释类型摘要
Documented 指示某一类型的注释将通过 javadoc 和类似的默认工具进行文档化。
Inherited 指示注释类型被自动继承。
Retention 指示注释类型的注释要保留多久。
Target 指示注释类型所适用的程序元素的种类。

公共接口

接口:annotation

定义:所有的annotation类型都要扩展的公共接口,注意: 手动扩展该公共接口的接口不扩展annotation类型,此接口本身也不定义annotation类型

方法:

annotationType() ;返回此annotation注释的类型

equals(Object obj);如果指定的对象在逻辑上等效于此接口的注释类型,则返回true

hashCode();返回此annotation的哈希码

toString();返回此annotation的字符串表示形式

枚举类型:

1.ElementType

继续自 Enum,实现Serializable, Comparable 接口

定义:程序元素类型,此枚举类型的常量提供了java程序中声明的元素的简单分类,这些常量与Target 元注释一起使用,以指定在什么情况使用注释类型是合法的

常量:

ANNOTATION_TYPE :注释类型声明

CONSTRUCTOR:构造方法声明

FIELD:字段声明(包括枚举常量)

LOCAL_VARIABLE :局部变量声明

METHOD:方法声明

PACKAGE:包声明

PARAMETER:参数声明

TYPE:类,接口或枚举声明

方法:

valueOf(String name);返回带有指定名称的该类型的枚举常量

values();按照声明的顺序返回包含此枚举类型常量的数组

2.RetentionPolicy

继续自 Enum,实现Serializable, Comparable 接口

定义:注释保留策略,此枚举类型的常量描述保留注释的不同策略,他们与Retention 元注释一起使用,以指定保留多长的注释

常量:

CALSS: 编译器将把注释记录在类文件中,但在运行时VM不需要保留注释

RUNTIME: 编译器将把注释记录在类文件中,在运行时VM将保留注释,因此可以反射性的读取

SOURCE:编译器要丢弃的注释

方法:

valueOf(String  name);返回带有指定名称的该类型的指定常量

values();按照声明的顺序返回包含此枚举类型常量的数组

异常类型

1.AnnotationTypeMismatchException:

若某个注释的类型在对该注释进行编译或序列化后发生了更改,而程序试图访问该注释的元素时,抛出此异常

方法:

element();返回类型不正确的元素的method对象

foundType();返回类型不正确的元素找到的数据类型

2.IncompleteAnnotationException:

若某个注释在编译或序列化之后,将某个注释类型添加到其类型定义中,而程序试图解析该注释类型的元素时抛出此异常,如果新元素有默认值,则不抛出此异常

方法:

annotationType();返回带有缺少元素的注释类型的Class对象

elementName();返回缺少元素的名称

错误类型:

AnnotationFormatError

当注释解析器试图从类文件读取注释并确定注释出现异常时,抛出此错误

注解类型:(5个元注解)

1.Documented

指示某一类型的注释将通过javadoc 和类似的默认工具进行文档化.应使用此类型来这些类型文档声明,其注释会影响由其客户端注释的元素的使用,如果类型声明是用Documented 来注释的,则其注释将成为注释元素的公共api的一部分

2.Inherited

指示注释类型被自动继承,如果在注释类型声明中存在Inherited 元注释,并且用户在某一类声明中查询该注释类型,同时该类声明中没有此类型的注释,则将在该类的超类自动查询该注释类型,此过程会重复进行,直到找到该类型的注释或到达该类层次的顶层为止,如果没有超类具有该类型的注释,则查询将指示当前类没有这样的注释

注意,如果使用注释类型注释类以外的任何事物,此元注释类型都是无效的,,还有注意,此元注释,仅促成从超类继承注释,对以实现接口的注释无效

3.Retention

指示注释类型要注释多久,如果注释中不存在Retention注释,则保留策略默认为RetentionPolicy.CLASS

只有元注释类型直接用于注释时,Target元注释才有效,如果元注释类型用作另一种注释类型的成员,则无效

4.Target

指示注释类型所适用的元素程序元素的种类,如果注释类型声明中不存在Target元注释,则声明的类型可以用在任一程序元素上,如果存在这样的元注释,则编译器强制实施指定的使用限制

5.Repeatable

可重复的意思,jdk1.8才加入,如果类型上加上Reteatable元注解,代表此类型的注解值可以同时取多个




你可能感兴趣的:(java)