Java 从1.5开始提供了 Annotation (注释,标注),它用来修饰应用程序的元素(类,方法,属性,参数,本地变量,包、元数据),编译器将其与元数据一同存储在 class 文件中,运行期间通过 Java 的反射来处理对其修饰元素的访问。Annotation 仅仅用来修饰元素,而不能影响代码的执行。只有通过其配套的框架或工具才能对其信息进行访问和处理。
Q:如何使用 Annotation ?
A:首先让我们从 Java 定义的 Annotation 开始。@Override 可能是我们最常用到的 Annotation 之一了,Eclipse 中当子类中的某个方法覆写的父类中的方法时,会亮黄灯提示。若用 @Override 修饰该方法,黄灯熄灭。再让我们来看一个例子,当我们使用 new java.util.Date(2010, 2, 25); 来初始化日期类时,Eclipse 仍然会亮黄灯提示,这是因为该方法被 @Deprecated 修饰了,表示不推荐使用。从这两个例子我们能够了解到,Annotation 是在编译期校验的。这一点最大的好处是在编译期间就可对错误进行处理。若使用 xml 的话,只有在运行期才能得到错误信息。
Q:Java 标准的 Annotation 有哪些?
A:@Deprecated 相当于Javadoc的@deprecated,被@Deprecated标注的对象class, method等被注明为不推荐使用。主要用于javac等编译工具。
@Override 注明对象method重载了父类的方法。javac等编译工具编译时会根据此Annotation判断重载方法是否正确。
@SuppressWarnings 告诉javac等编译器忽略所指定的特定的警告信息。
@Target 被定义的annotation可以附加在那些对象上。
@Retention annotation的作用期间。
这里我们要重点介绍两个 Annotation ,因为这两个 Annotation 有一点特殊,因为它们并不是用来修饰代码,而是用来修饰 Annotation 的。
@Target 用来标注定义的 Annotation 可以附加在那些对象上。可选参数包括CONSTRUCTOR(构造器)、FIELD(属性及enum实例)LOCAL_VARIABLE(局部变量)、 METHOD(方法)、PACKAGE(包)、PARAMETER(参数)以及TYPE(类、接口、注解类型、enum)。下例定义的 Annotation 被 @Target 修饰,表示该 Annotation 可以用来修饰属性和参数。
-
@Target( { FIELD, PARAMETER})
-
public @interface Resource {
-
public String id() default "";
- }
使用方法:
-
public class Mxjava {
-
@Resource(id="http://www.mxjava.com")
-
private String url;
-
public void getLog(@Resource(id="001") String logId) {...}
- }
@Retention 用标注在什么级别保存该 Annotation 。可选参数包括SOURCE(编译期会被忽略不做保存)、CLASS(编译后的 class 文件中可用,但虚拟机运行时忽略)、RUNTIME(运行期保留,若要使用反射机制读取 Annotation 信息的话,使用该项。)
-
@Target( { FIELD, PARAMETER})
-
@Retention(RUNTIME)
-
public @interface Resource {
-
public String id() default "";
- }
Q:如何定义 Annotation ?
A:先让我们来看一个最简单的 Annotation 。
-
@Target( { FIELD })
-
@Retention(RUNTIME)
-
public @interface Resource {
-
public String id() default "";
- }
@Target 是 Java 标准的 Annotation,本例中指定定义的 Annotation 可以附加在属性(Field)上。@Retention 也是 Java 标准的 Annotation,指定作用期间是运行期。@interface 是用来修饰 Annotation 的,请注意,它不是 interface。这个关键字声明隐含了一个信息:它是继承了 java.lang.annotation.Annotation 接口,而不是声明了一个 interface。Annotation 成员的定义看上去很象方法,default “” 表示默认值为空字符串。使用方法如下:
-
public class mxjava {
-
@Resource(id="http://www.mxjava.com")
-
private String url;
- }
若没有配套的框架和工具,@Resource 是不起任何作用的。就象前面讲到的那样,它不会对代码的执行有任何影响。
Q:什么时候需要自定义 Annotation ?
A:一般来说,若不做框架和工具的开发,一般情况下是不需要自定义 Annotation 的。
分享到:
相关推荐
《Java Annotation手册》 在Java编程语言中,注解(Annotation)是一种元数据,它提供了在编译时或运行时处理代码的一种方式。通过注解,开发者可以向编译器或JVM提供有关代码的附加信息,而这些信息通常不直接影响...
本文将深入探讨Java注解的基础知识、使用场景以及如何利用它们来简化开发流程。 #### 一、Java注解的起源与背景 注解的概念源于Sun Microsystems(现已被Oracle收购),旨在为开发者提供一种灵活且强大的机制,...
Java 1.5 引入了一种新的元编程机制——注解(Annotation),极大地增强了代码的可读性和可维护性。注解是一种在代码中添加元数据的方式,它允许程序员在源代码上添加一些信息,这些信息可以被编译器或运行时环境...
在《Java Annotation入门》的基础上,这篇手册深入探讨了Annotation的定义、使用和功能。 一、Annotation的本质 Annotation提供了一种附加信息到程序元素(如类、方法、变量等)的方式,这些信息被称为元数据。元...
Java Annotation 是一种在Java编程语言中引入的元数据机制,自J2SE 5.0开始可用,由JSR-175规范定义。注释的主要目的是为代码提供附加信息,这些信息可以用来生成文档、追踪依赖关系或执行编译时检查。元数据允许...
1. Annotation接口:这是所有自定义注解的基础,它定义了一个基本的方法集,包括equals()、hashCode()、toString()和annotationType()。每个自定义注解都会继承这个接口,实现特定的行为。 2. ElementType枚举:它...
在Java编程中,注解(Annotation)和反射(Reflection)是两个非常强大的工具,它们能够帮助我们实现更灵活、更具动态性的代码。本篇将详细探讨如何利用这两者来实现一个通用的数据库访问接口,以适应不同类型的...
Java自定义注解(Annotation)是Java编程语言中的一个重要特性,自JDK1.5引入以来,它极大地简化了代码的管理和维护。注解提供了一种元数据的方式,允许程序员在源代码中嵌入额外的信息,这些信息可以被编译器、...
【Java基础】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年发布。Java以其“一次编写,到处运行”的特性,成为跨平台应用开发的首选语言。Java的基础部分主要包括...
Java注解(Annotation)是Java 5引入的一种元数据机制,用于向编译器、工具或运行时系统提供关于代码的附加信息。注解不是程序的一部分,不会直接影响代码的执行,但可以通过反射API来访问和处理这些信息,从而影响...
学习java自定义注解的小例子,处理运行时注解方法,可以结合博客学习,博客地址: http://blog.csdn.net/liuyonglei1314/article/details/59494503
《Java基础案例教程(第2版)》是一本旨在教授初学者Java编程基础知识的教材,其PPT形式的压缩包提供了清晰、直观的教学材料。在深入探讨这些知识点之前,我们首先了解一下Java语言的基础概念。 Java是一种面向对象...
Java 注解(Annotation)是 Java 语言中的一个重要特性,它为程序员提供了元数据,即关于数据的数据。在本文中,我们将深入理解 Java 注解的基本概念、用途、工作方式以及如何使用它们。 首先,让我们了解为什么...
Java语言基础是编程入门的重要部分,它涵盖了编程的基本概念、语法和编程思想。这份"java语言基础.zip"压缩包很可能是某内部培训机构的教学资料,旨在帮助初学者掌握Java编程的核心知识。下面,我们将深入探讨Java...
Java 注解(Annotation)是 Java 语言中的一个重要特性,它允许程序员在源代码中嵌入元数据(metadata)。元数据是关于数据的数据,不直接影响程序的运行,但可以被编译器或运行时环境用来生成代码、执行验证、实现...
Java编程基础PPT是针对初学者的一份详细教程,涵盖了Java语言的核心概念和技术。这份PPT旨在帮助学习者建立坚实的Java编程基础,从而能够编写出高效、稳定的代码。以下是PPT可能涵盖的主要知识点: 1. **Java简介**...
Java的基础知识是学习Java编程的起点,涵盖了许多关键概念和语法。 1. **Java环境设置**:在开始学习Java之前,你需要安装Java Development Kit (JDK)。JDK包含了Java编译器、Java运行时环境和其他开发工具。设置...
这篇教程“java入门基础 李兴华教程”涵盖了多个关键概念,旨在帮助初学者掌握Java的核心知识。以下是对压缩包内各章节主要内容的详细解读: 1. **第10章:泛型** 泛型是Java SE 5.0引入的新特性,主要用于增强...
这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...
### Java 注解Annotation实例上手文档 #### 一、引言与基础知识 Java注解(Annotation)自JDK 5.0引入以来,已经成为Java语言的重要特性之一,它为代码元数据提供了一种标准化的方式,使得编译器、工具和其他框架...