黑马程序员_给编译器看的注释annotation

来源:互联网 发布:淘宝自动确认多久到账 编辑:程序博客网 时间:2024/05/16 07:43
------- android培训java培训、期待与您交流! ----------

java注释使用Annotation
 Annotation实际上是一种注释的语法
在jdk1.5以后的系统中,内建了三个Annotation:@Override,
@Deprecated,@SuppressWarnings
接口 Annotation
所有已知实现类:
BindingType, ConstructorProperties, Deprecated,

DescriptorKey, Documented, Generated, HandlerChain,

Inherited, InitParam, MXBean, Oneway, Override,

PostConstruct, PreDestroy, RequestWrapper, Resource,

Resources, ResponseWrapper, Retention, ServiceMode,

SOAPBinding, SOAPMessageHandler, SOAPMessageHandlers,

SupportedAnnotationTypes, SupportedOptions,

SupportedSourceVersion, SuppressWarnings, Target,

WebEndpoint, WebFault, WebMethod, WebParam, WebResult,

WebService, WebServiceClient, WebServiceProvider,

WebServiceRef, WebServiceRefs, XmlAccessorOrder,

XmlAccessorType, XmlAnyAttribute, XmlAnyElement,

XmlAttachmentRef, XmlAttribute, XmlElement,

XmlElementDecl, XmlElementRef, XmlElementRefs,

XmlElements, XmlElementWrapper, XmlEnum, XmlEnumValue,

XmlID, XmlIDREF, XmlInlineBinaryData,

XmlJavaTypeAdapter, XmlJavaTypeAdapters, XmlList,

XmlMimeType, XmlMixed, XmlNs, XmlRegistry,

XmlRootElement, XmlSchema, XmlSchemaType,

XmlSchemaTypes, XmlTransient, XmlType, XmlValue

 

public interface Annotation所有 annotation 类型都要扩展

的公共接口。注意,手动扩展该公共接口的接口不 定义

annotation 类型。还要注意此接口本身不定义 annotation 类

型。

方法摘要
 Class<? extends Annotation> annotationType()
          返回此 annotation 的注释类型。
 boolean equals(Object obj)
          如果指定的对象表示在逻辑上等效于此接口的注释

,则返回 true。
 int hashCode()
          返回此 annotation 的哈希码,具体说明如下: 一

个 annotation 的哈希码是其成员(包括那些带有默认值的成

员)的哈希码的和,具体说明如下: annotation 成员的哈希

码是成员值哈希码的 XOR(它是 String.hashCode() 计算得到

的成员名哈希码的 127 倍),具体说明如下: 成员值的哈希

码取决于其类型: 基值 v 的哈希码等于

WrapperType.valueOf(v).hashCode(),其中 WrapperType 是

对应 v 的基本类型的包装器类型(Byte、Character、Double

、Float、Integer、Long、Short 或 Boolean)。
 String toString()
          返回此 annotation 的字符串表示形式。
 
equals
boolean equals(Object obj)如果指定的对象表示在逻辑上等

效于此接口的注释,则返回 true。换句话说,如果指定对象是

一个与此实例相同的 annotation 类型的实例,即其所有成员

都与此实例中所对应的成员相等,则返回 true,具体说明如下


如果 x == y,则认为值分别为 x 和 y 的两个对应的基本类型

成员相等,除非它们的类型是 float 或 double。
如果 Float.valueOf(x).equals(Float.valueOf(y)) 为真,则

认为值分别为 x 和 y 的两个对应的 float 成员相等。(与

== 运算符不同,NaN 被认为等于其自身,并且 0.0f 不等于

-0.0f。)
如果 Double.valueOf(x).equals(Double.valueOf(y)) 为真,

则认为值分别为 x 和 y 的两个对应的 double 成员相等。(

与 == 运算符不同,NaN 被认为等于其自身,并且 0.0 不等于

-0.0。)
如果 x.equals(y) 为真,则认为值分别为 x 和 y 的两个对应

的 String、Class、enum 或 annotation 类型的成员相等。(

注意,此定义对于 annotation 类型的成员是递归的。)
对于适当重载的 Arrays.equals(long[], long[]),如果

Arrays.equals(x, y) 为真, 则认为两个对应的数组类型的成

员 x 和 y 相等。

覆盖:
类 Object 中的 equals
参数:
obj - 要与之比较的引用对象。
返回:
如果指定的对象表示在逻辑上等效于该接口的 annotation,则

返回 true,否则返回 false
另请参见:
Object.hashCode(), Hashtable

-------------------------------------------------------

-------------------------

hashCode
int hashCode()返回此 annotation 的哈希码,具体说明如下


一个 annotation 的哈希码是其成员(包括那些带有默认值的

成员)的哈希码的和,具体说明如下: annotation 成员的哈

希码是成员值哈希码的 XOR(它是 String.hashCode() 计算得

到的成员名哈希码的 127 倍),具体说明如下:

成员值的哈希码取决于其类型:

基值 v 的哈希码等于 WrapperType.valueOf(v).hashCode(),

其中 WrapperType 是对应 v 的基本类型的包装器类型(Byte

、Character、Double、Float、Integer、Long、Short 或

Boolean)。
string、enum、class 或 annotation 的成员值 I 的哈希码 v

是通过调用 v.hashCode() 来计算的。(对于 annotation 成

员值,这是一种递归定义。)
数组成员值的哈希码是通过基于该值调用 Arrays.hashCode 的

适当重载来计算的。(各种基本类型和对象引用类型分别对应

一个重载。)

覆盖:
类 Object 中的 hashCode
返回:
此 annotation 的哈希码。
另请参见:
Object.equals(java.lang.Object), Hashtable

-------------------------------------------------------

-------------------------

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

示形式的细节取决于实现,但下面的情况是最常见的:
   @com.acme.util.Name(first=Alfred, middle=E.,

last=Neuman)
 
覆盖:
类 Object 中的 toString
返回:
此 annotation 的字符串表示形式

-------------------------------------------------------

-------------------------

annotationType
Class<? extends Annotation> annotationType()返回此

annotation 的注释类型。

自定义Annotation
定义Annotation的语法如下:
public @interface Annotation的名称{}
例如:
public @interface MyAnnotation{
public String key() default "haha";
public String value() default "hehe";
}
访问它的语法@MyAnnotation(key="nihao",value="niyehao")
当然可以用枚举限制他的变量取值,变量可以是个数组
注释类型 Retention:

注释类型 Retention本身是个Annotation,其中取值是通过枚

举 RetentionPolicy来指定范围的
public enum RetentionPolicyextends

Enum<RetentionPolicy>注释保留策略。此枚举类型的常量描述

保留注释的不同策略。它们与 Retention 元注释类型一起使用

,以指定保留多长的注释。

 

从以下版本开始:
1.5

-------------------------------------------------------

-------------------------

枚举常量摘要
CLASS
          编译器将把注释记录在类文件中,但在运行时 VM

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

保留注释,因此可以反射性地读取。
SOURCE
          编译器要丢弃的注释。
  方法摘要
static RetentionPolicy valueOf(String name)
          返回带有指定名称的该类型的枚举常量。
static RetentionPolicy[] values()
          Returns an array containing the constants of

this enum type, in the order they are declared.

java.lang.annotation下存在Target,Documentded

,Inherited
java.lang.annotation
注释类型 Target

-------------------------------------------------------

-------------------------

@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)
public @interface Target指示注释类型所适用的程序元素的

种类。如果注释类型声明中不存在 Target 元注释,则声明的

类型可以用在任一程序元素上。如果存在这样的元注释,则编

译器强制实施指定的使用限制。 例如,此元注释指示该声明类

型是其自身,即元注释类型。它只能用在注释类型声明上:

    @Target(ElementType.ANNOTATION_TYPE)
    public @interface MetaAnnotationType {
        ...
    }
 此元注释指示该声明类型只可作为复杂注释类型声明中的成员

类型使用。它不能直接用于注释:
    @Target({})
    public @interface MemberType {
        ...
    }
 这是一个编译时错误,它表明一个 ElementType 常量在

Target 注释中出现了不只一次。例如,以下元注释是非法的:
    @Target({ElementType.FIELD, ElementType.METHOD,

ElementType.FIELD})
    public @interface Bogus {
        ...
    }
 


-------------------------------------------------------

-------------------------

必需元素摘要
 ElementType[] value
           
 

元素详细信息


value
public abstract ElementType[] value
org.w3c.dom
接口 Document
所有超级接口:
Node
所有已知实现类:
SOAPPart

-------------------------------------------------------

-------------------------

public interface Documentextends NodeDocument 接口表示

整个 HTML 或 XML 文档。从概念上讲,它是文档树的根,并提

供对文档数据的基本访问。

因为元素、文本节点、注释、处理指令等不能存在于 Document

的上下文之外,所以 Document 接口还包含所需的创建这些对

象的工厂方法。所创建的 Node 对象具有 ownerDocument 属性

,该属性将 Node 对象与创建这些对象时的上下文所属的

Document 关联起来。

另请参见 Document Object Model (DOM) Level 3 Core

Specification。

 


-------------------------------------------------------

-------------------------

字段摘要
  从接口 org.w3c.dom.Node 继承的字段
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE,

DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE,

DOCUMENT_POSITION_CONTAINED_BY,

DOCUMENT_POSITION_CONTAINS,

DOCUMENT_POSITION_DISCONNECTED,

DOCUMENT_POSITION_FOLLOWING,

DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC,

DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE,

ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE,

NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
  方法摘要
 Node adoptNode(Node source)
          试图把另一文档中的节点采用到此文档。
 Attr createAttribute(String name)
          创建给定名称的 Attr。
 Attr createAttributeNS(String namespaceURI, String

qualifiedName)
          创建给定的限定名称和名称空间 URI 的属性。
 CDATASection createCDATASection(String data)
          创建其值为指定字符串的 CDATASection 节点。
 Comment createComment(String data)
          创建给定指定字符串的 Comment 节点。
 DocumentFragment createDocumentFragment()
          创建空 DocumentFragment 对象。
 Element createElement(String tagName)
          创建指定类型的元素。
 Element createElementNS(String namespaceURI, String

qualifiedName)
          创建给定的限定名称和名称空间 URI 的元素。
 EntityReference createEntityReference(String name)
          创建 EntityReference 对象。
 ProcessingInstruction createProcessingInstruction

(String target, String data)
          创建给定指定名称和数据字符串的

ProcessingInstruction 节点。
 Text createTextNode(String data)
          创建给定指定字符串的 Text 节点。
 DocumentType getDoctype()
          与此文档相关的文档类型声明(参见 DocumentType

)。
 Element getDocumentElement()
          这是一种便捷属性,该属性允许直接访问文档的文

档元素的子节点。
 String getDocumentURI()
          文档的位置,如果未定义或 Document 是使用

DOMImplementation.createDocument 创建的,则为 null。
 DOMConfiguration getDomConfig()
          调用 Document.normalizeDocument() 时使用的配

置。
 Element getElementById(String elementId)
          返回具有带给定值的 ID 属性的 Element。
 NodeList getElementsByTagName(String tagname)
          按文档顺序返回包含在文档中且具有给定标记名称

的所有 Element 的 NodeList。
 NodeList getElementsByTagNameNS(String namespaceURI,

String localName)
          以文档顺序返回具有给定本地名称和名称空间 URI

的所有 Elements 的 NodeList。
 DOMImplementation getImplementation()
          处理此文档的 DOMImplementation 对象。
 String getInputEncoding()
          指定解析时此文档使用的编码的属性。
 boolean getStrictErrorChecking()
          指定是否强制执行错误检查的属性。
 String getXmlEncoding()
          作为 XML 声明的一部分,指定此文档编码的属性。
 boolean getXmlStandalone()
          作为 XML 声明的一部分,指定此文档是否为独立文

档的属性。
 String getXmlVersion()
          作为 XML 声明 的一部分指定此文档版本号的属性


 Node importNode(Node importedNode, boolean deep)
          从另一文档向此文档导入节点,而不改变或移除原

始文档中的源节点;此方法创建源节点的一个新副本。
 void normalizeDocument()
          此方法的行为如同使文档通过一个保存和加载的过

程,而将其置为 "normal(标准)" 形式。
 Node renameNode(Node n, String namespaceURI, String

qualifiedName)
          重命名 ELEMENT_NODE 或 ATTRIBUTE_NODE 类型的

现有节点。
 void setDocumentURI(String documentURI)
          文档的位置,如果未定义或 Document 是使用

DOMImplementation.createDocument 创建的,则为 null。
java.lang.annotation
注释类型 Inherited

-------------------------------------------------------

-------------------------

@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)


public @interface Inherited指示注释类型被自动继承。如果

在注释类型声明中存在 Inherited 元注释,并且用户在某一类

声明中查询该注释类型,同时该类声明中没有此类型的注释,

则将在该类的超类中自动查询该注释类型。此过程会重复进行

,直到找到此类型的注释或到达了该类层次结构的顶层

(Object) 为止。如果没有超类具有该类型的注释,则查询将指

示当前类没有这样的注释。

注意,如果使用注释类型注释类以外的任何事物,此元注释类

型都是无效的。还要注意,此元注释仅促成从超类继承注释;

对已实现接口的注释无效。


 void setStrictErrorChecking(boolean

strictErrorChecking)
          指定是否强制执行错误检查的属性。
 void setXmlStandalone(boolean xmlStandalone)
          作为 XML 声明 的一部分指定此文档是否是单独的

的属性。
 void setXmlVersion(String xmlVersion)
          作为 XML 声明 的一部分指定此文档版本号的属性


 

------- android培训java培训、期待与您交流! ----------
原创粉丝点击