一、Annotation究竟是什么?
Annotation 提供了一条与程序元素关联任何信息或者任何元数据(metadata)的途径。从某些方面看,annotation就像修饰符一样被使用,并应用于包、类型、构造方法、方法、成员变量、参数、本地变量的声明中。这些信息被存储在annotation的“name=value”结构对中。 annotation类型是一种接口,能够通过java反射API的方式提供对其信息的访问。
annotation能被用来为某个程序元素(类、方法、成员变量等)关联任何的信息。需要注意的是,这里存在着一个基本的潜规则:annotaion不能影响程序代码的执行,无论增加、删除 annotation,代码都始终如一的执行。另外,尽管一些annotation通过java的反射api方法在运行时被访问,而java语言解释器在工作时忽略了这些annotation。正是由于java虚拟机忽略了annotation,导致了annotation类型在代码中是“不起作用”的;只有通过某种配套的工具才会对annotation类型中的信息进行访问和处理。本文中将涵盖标准的annotation和meta- annotation类型,陪伴这些annotation类型的工具是java编译器(当然要以某种特殊的方式处理它们)。
由于上述原因,annotation在使用时十分简便。一个本地变量可以被一个以NonNull命名的annotation类型所标注,来作为对这个本地变量不能被赋予null值的断言。而我们可以编写与之配套的一个annotation代码分析工具,使用它来对具有前面变量的代码进行解析,并且尝试验证这个断言。当然这些代码并不必自己编写。在JDK安装后,在JDK/bin目录中可以找到名为“apt”的工具,它提供了处理annotation的框架:它启动后扫描源代码中的annotation,并调用我们定义好的annotation处理器完成我们所要完成的工作(比如验证前面例子中的断言)。说到这里, annotation的强大功能似乎可以替代XDoclet这类的工具了,随着我们的深入,大家会更加坚信这一点。
二、Annotation的定义:
这段文字开始介绍annotation相关技术。在此大家将看到java5.0的标准annotation类型,这种标准类型就是前文中所说的“内建”类型,它们可以直接被javac支持。可喜的是,在java6.0beta版中的javac已经加入了对自定义annotation的支持。
三、Annotation工作原理:
在java5.0 中Java.lang.reflect提供的反射API被扩充了读取运行时annotation的能力。让我们回顾一下前面所讲的:一个 annotation类型被定义为runtime retention后,它才是在运行时可见,当class文件被装载时被保存在class文件中的annotation才会被虚拟机读取。
其中java.lang.reflect.AnnotatedElement是重要的接口,它代表了提供查询 annotation能力的程序成员。这个接口被java.lang.Package、java.lang.Class实现,并间接地被Method类、 Constructor类、java.lang.reflect的Field类实现。而annotation中的方法参数可以通过Method类、 Constructor类的getParameterAnnotations()方法获得。
分享到:
相关推荐
在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响程序的执行,但可以用于...
本文将基于《Java+Annotation.pdf》的内容,深入浅出地介绍注解的基本概念、工作原理以及如何在实际项目中运用。 #### 二、为什么使用注解? 在Java应用开发中,经常需要使用模板代码或维护一些与程序代码同时存在...
本篇将深入探讨Java注解的基本概念、类型以及如何使用。 一、注解的定义与分类 1. 定义:Java注解是一种特殊的声明,可以附加到类、接口、方法、变量等元素上。它们以`@`符号开头,后跟注解的名称。 2. 分类: -...
Annotation简化了代码,提高了可读性和可维护性,尤其是在现代Java框架中广泛应用。 ### Annotation的基本概念 1. **Annotation类型**:定义了一个特定的注解,类似于接口,包含名称和多个注解元素。每个定义的...
总结,Java反射和注解是Java世界中的重要概念,它们为程序员提供了强大的工具,帮助实现灵活、动态和元数据驱动的编程。学习和掌握这两者,对于提升Java开发者的技能水平和解决复杂问题的能力至关重要。通过“浙大...
Java Annotation是Java编程语言中的一个重要特性,它允许程序员在代码中嵌入元数据,这些元数据不直接影响程序的运行,但可以被编译器、工具或运行时环境用来验证代码、生成文档、实现依赖注入等功能。Annotation在...
在《Java Annotation入门》之后的这篇《重难点之JavaAnnotation手册》中,作者深入探讨了Annotation的概念、定义以及其在Java开发中的应用。 一、Annotation是什么? Annotation是一种在代码中添加的特殊注解,用于...
1. Annotation概念:它以类似修饰符的形式出现在代码中,如`@NonNull`,并带有零个或多个成员。每个成员具有名称和对应的值,类似于JavaBeans的属性。 2. Annotation类型:定义Annotation类型的语法类似于接口,但...
Java 注解(Annotation)是Java语言中的一个重要特性,它为程序元素提供了附加信息,这些信息可以用于编译器检查、代码分析、运行时处理等多种用途。注解在代码中类似于修饰符,可以应用于包、类、接口、方法、字段、...
### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...
本文主要介绍了Java注解的基本概念、作用以及使用方法。 一、为什么要使用Java注解 1. 自动化模板代码生成:通过注解,我们可以减少重复的模板代码,比如在创建JAX-RPC Web服务时,接口和实现的模版代码可以由工具...
Annotation是Java语言中的一种特性,它为程序元素(如包、类、方法、变量等)提供了附加信息。这些信息可以是元数据,用于编译器、工具或运行时系统使用,但不会直接影响程序的执行。在Java中,Annotation表现为一种...
在Java编程语言中,Annotation(注解)是一种元数据,它提供了在编译时和运行时为代码添加信息的方式。注解是自Java 5版本引入的特性,它增强了代码的可读性和可维护性,同时也简化了某些编程任务。在本篇中,我们将...
Java 注解(Annotation)是 Java 语言中的一种元数据机制,它允许程序员在代码中嵌入额外的信息,这些信息可以用于编译时检查、运行时处理或代码生成。注解不会直接影响程序的运行,但可以通过工具(如编译器、IDE、...
在现代软件开发中,尤其是Java领域,`Annotation`已经成为一种非常重要的编程技术。它不仅能够帮助开发者简化代码编写过程,还能提高程序的可读性和可维护性。本文将通过一个具体的例子——权限控制系统的实现——来...
Java开发中,`jar`包是Java Archive的缩写,是一种可执行的文件格式,用于封装Java...同时,了解和掌握`javax.annotation`中的其他注解,以及IoC和装配Bean的概念,对于提升Java应用的设计质量和可维护性具有重要意义。
`@AnnotationProcessor`是与注解处理相关的概念,主要涉及到Java的编译器插件机制。在本主题中,我们将深入探讨如何创建和使用自定义的`annotationProcessor`,以及它在IDEA中的应用。 首先,让我们了解什么是`...