`
zhuxiaoqiu
  • 浏览: 46081 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Annotation入门

阅读更多
现在可以在越来越多的程序代码中看到Annotation(中文翻译为“注释”)的影子,在一些工具中也开始使用Annotation来代替XML做一些配置工作,所以有必要了解一Annotation的知识。
先来看看在JDK中对Annotation是怎么描述的。
————————————————————————————————————————
java.lang.annotation
接口 Annotation
public interface Annotation
所有 annotation 类型都要扩展的公共接口。注意,手动扩展该公共接口的接口不 定义 annotation 类型。还要注意此接口本身不定义 annotation 类型。
————————————————————————————————————————
由上面的文字,我们首先要获取的一个信息是,Annotation是Java API中的一个接口。这个接口具体怎么用,和普通的接口有什么不一样,我们会在后面结合例子来说明。
Annotation用来提供一些和程序有关的信息,但annotation本身并不是程序语意的一个组成部分。举个例子来说,我们的程序中通过会在开头包含代码作者的一些信息:
public class Generation3List extends Generation2List {
   // Author: John Doe
   // Date: 3/17/2002
   // Current revision: 6
   // Last modified: 4/12/2004
   // By: Jane Doe
   // Reviewers: Alice, Bill, Cindy 

   // class code goes here
}

如果要更换为使用annotation的方式说明这些信息的话,首先需要定义一个annotation类,语法如下:
@interface ClassPreamble {
   String author();
   String date();
   int currentRevision() default 1;
   String lastModified() default "N/A";
   String lastModifiedBy() default "N/A";
   String[] reviewers();  // Note use of array
}

由上面的语法可以看到,annotation类的定义和接口的定义类似,只是需要在interface关键字之前加上@符号。Annotation类的元素的定义看上去有点像方法的声明,另外可以提供默认值给这些元素。
一旦定义了annotation类型之后,就可以使用它了,并且将实际的值填入annotation的元素中:
@ClassPreamble (
   author = "John Doe",
   date = "3/17/2002",
   currentRevision = 6,
   lastModified = "4/12/2004",
   lastModifiedBy = "Jane Doe"
   reviewers = {"Alice", "Bob", "Cindy"} // Note array notation
)

public class Generation3List extends Generation2List {
// class code goes here
}

借助上面的这个例子,我们大体知道了annotation是怎么回事了。
Annotation的使用大概可以分为三种类型:
1、作为信息提供给编译器 Annotation可以被编译器用来侦测错误和禁止警告信息
2、在编译时和运行时获得处理 一些工具软件可以利用annotation提供的信息来生成代码或者XML等等
3、在运行时获得处理 有些annotation可以在运行时被检查
Annotation可以应用在类、方法、变量等程序元素的声明前面。比如应用在类的定义前面:
@Author(
   name = "Benjamin Franklin",
   date = "3/27/2003"
)
class MyClass() { }

再比如应用在方法的声明前面:
@SuppressWarnings(value = "unchecked")
void myMethod() { }

如果annotation只有一个元素,而且该元素的名字是"value"的话,那么可以简写成:
@SuppressWarnings("unchecked")
void myMethod() { }

如果annotation没有元素的话,那么可以进一步简写成如下所示:
@Override
void mySuperMethod() { }

还可以从另外一个角度对annotation来分类
1、语言规范中预定义的annotation 包括了三个@Deprecated, @Override和@SuppressWarnings
2、用户自定义的各种annotation
1)、被@Deprecated标记的元素,表示该元素是已经过时的,不应该再被使用的。如果用户使用了@Deprecated标记的类、方法时,在编译的时候编译器会给出警告信息。
2)、@Override标记的元素表示是要override该元素在它的父类中的定义。比如,你在程序中重写toString()方法,如果你写成如下形式了,那么在编译时编译器会给出错误提示。(把toString()错写成tostring())
@Override
String tostring() { }

3)、@SuppressWarings用来告诉编译器忽略一些特定的警告信息。下面的例子中,使用了一个已过时的方法正常情况下编译器是会给出警告信息的。如果使用@SuppressWarnings的话,就是告诉编译器不要给出这些警告信息。
// use a deprecated method and tell compiler not to generate a warning
   @SuppressWarnings("deprecation")
    void useDeprecatedMethod() {
        objectOne.deprecatedMethod(); //deprecation warning -suppressed
    }

作为初学者,第一步骤是大概了解annotation之后,可以在程序中使用annotation即可,比如在使用Spring2时使用annotation的方式取代XML配置。
分享到:
评论

相关推荐

    Hibernate Annotation入门

    这就是一个基本的Hibernate Annotation入门示例。通过这种方式,我们可以更方便地管理数据库操作,减少与数据库相关的代码量。同时,由于注解是类型安全的,因此可以降低因配置错误导致的问题。 在实际开发中,你还...

    Java Annotation入门.doc

    Java 注解(Annotation)是Java 5.0版本引入的一种元数据机制,它为代码提供了额外的信息,这些信息可以被编译器、JVM或工具用来执行特定的任务,如代码分析、验证、生成代码等。本文主要介绍了Java注解的基本概念、...

    spring annotation 入门

    ### Spring Annotation 入门 #### 一、Spring 注解概述 Spring 框架自2.0 版本起引入了一系列注解支持,这极大简化了配置管理,并为开发提供了更为简洁灵活的方式。通过注解,可以将业务逻辑与配置分离,减少XML...

    Java+Annotation入门[定义].pdf

    Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是关于数据的数据,可以用来提供额外的信息,如代码的解释、编译时或运行时的处理指令等。注解在Java中扮演着代码文档、编译器...

    java annotation入门

    Java 注解(Annotation)是 Java 语言中的一个重要特性,它为程序员提供了元数据,即关于数据的数据。在本文中,我们将深入理解 Java 注解的基本概念、用途、工作方式以及如何使用它们。 首先,让我们了解为什么...

    重难点之JavaAnnotation手册.pdf

    在《Java Annotation入门》之后的这篇《重难点之JavaAnnotation手册》中,作者深入探讨了Annotation的概念、定义以及其在Java开发中的应用。 一、Annotation是什么? Annotation是一种在代码中添加的特殊注解,用于...

    JavaAnnotation手册[借鉴].pdf

    在《Java Annotation入门》的基础上,这篇手册深入探讨了Annotation的定义、使用和功能。 一、Annotation的本质 Annotation提供了一种附加信息到程序元素(如类、方法、变量等)的方式,这些信息被称为元数据。元...

    JAVA annotation入门基础

    Java 注解(Annotation)是 Java 语言中的一个重要特性,它允许程序员在源代码中嵌入元数据(metadata)。元数据是关于数据的数据,不直接影响程序的运行,但可以被编译器或运行时环境用来生成代码、执行验证、实现...

    在Nutz中使用Ioc-Annotation的入门教程

    在Nutz中使用Ioc-Annotation的入门教程 Nutz是一个轻量级的Java开发框架,它提供了强大的IoC(Inversion of Control)容器和AOP(Aspect-Oriented Programming)支持。本教程将引导您了解如何在Nutz中利用Ioc-...

    基于annotation的SpringMVC入门小例子

    **基于Annotation的SpringMVC入门小例子** 在Java Web开发中,SpringMVC是一个非常流行的框架,它使得构建Web应用程序变得更加简洁和高效。本篇将详细介绍如何使用注解(Annotation)来配置和运行一个基本的...

    JSF+Spring+Hibernate(Annotation)

    JSF+Spring+Hibernate(Annotation)的login小实例,建议入门的朋友看看,老鸟就免了,呵呵。环境:SQLSever2000+jdk5.0+spring2.0+hibernate3.2+jsf

    mybatis学习总结:annotation与xml结合示例

    本篇文章将聚焦于MyBatis中的注解(Annotation)与XML配置的结合使用,旨在帮助开发者更深入地理解这一关键特性。 首先,MyBatis允许我们使用注解来简化Mapper接口的定义,无需编写XML映射文件。例如,我们可以在...

    Java开发实战从入门到精通视频教程下载第16章 Annotation.zip

    在本Java开发实战从入门到精通的视频教程中,第16章主要聚焦于Java注解(Annotation)这一核心特性。注解是Java语言提供的一种元数据机制,它为代码提供了额外的信息,这些信息可以被编译器、JVM或者在运行时的工具...

    基于Java注解(Annotation)的自定义注解入门介绍

    在Java编程中,注解(Annotation)是一种强大的工具,它允许程序员向源代码中添加元数据,这些元数据可以被编译器或运行时环境用于各种目的,如代码分析、验证、生成代码等。自定义注解是Java注解机制的一个重要方面,...

    JAVA基础入门到精通pdf

    13. **注解(Annotation)**:注解是元数据的一种形式,提供了一种安全的方式向编译器和JVM传递信息,用于代码的编译、部署、运行时检查等。 14. **Java标准库**:Java标准库(Java API)包含大量预先定义的类和...

    第18章 给编译器看的注释──Annotation(注解)

    JAVA 从入门到精通 第18章 给编译器看的注释──Annotation(注解).ppt

    Maven+SpringMVC的入门级HelloWorld实例

    在IT行业中,Maven和SpringMVC是两个非常重要的组件,它们分别是项目管理和Web应用程序开发的核心...通过这个入门级的HelloWorld实例,我们可以快速理解这两个工具的基本用法,为进一步深入学习和实践打下坚实的基础。

Global site tag (gtag.js) - Google Analytics