Annotation,即注解,是Java5的新特性,Thinking java 里的的解释是:注解是众多引入到java SE5中的重要语言变化之一。他们可以提供用来完整地描述程序所需的信息,而这些信息是无法用java来表达的。因此,注解使得我们能够以将由编译器来测试和验证的格式,存储有关程序的额外信息。注解可以用来生成描述符文件,甚至或是新的类定义,并且有助于减轻编写样板代码的负担。通过使用注解,我们可以将这些元数据保存在java源代码中,并利用annotation API为自己的注解构造处理工具,同时,注解的优点还包括:更加干净易读的代码以及编译器类型检查等。虽然Java SE5预先定义了一些元数据,但一般来说,主要还是需要程序员自己添加新的注解,并且按自己的方式使用它们。 总而言之,annotation主要目的介于源代码与API文件说明之间。annotation对程序代码做出一些说明和解释。让自己和别人看得方便。
在本次实例代码中,使用了annotation来标注自定义的错误码。具体代码如下:
Error.java 注解的定义
package com.test.util; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * 类名:<br> * 类说明:<br> * * @version V1.0 * @author lu7kang 2011-3-6 */ @Retention(RetentionPolicy.RUNTIME) public @interface Error { String msg() default ""; }
ErrorCode.java 自定义的错误码,使用@Error注解说明错误码
package com.test.util; /** * 类名:管理系统错误码<br> * 类说明:<br> * * @version V1.0 * @author lu7kang 2011-3-6 */ public enum ErrorCode { @Error(msg="请先登录系统") sys_00, @Error(msg="没有权限操作") sys_01, @Error(msg="登录超时") sys_02, @Error(msg="系统异常") sys_03; /** * 返回错误码 */ public String getCode(){ return this.name(); } /** * 返回错误信息 */ public String getMessage(){ Error error = null; try { error = this.getClass().getField(this.getCode()).getAnnotation(Error.class); } catch (Exception e) { return null; } return error.msg(); } }
test.java 测试类
package com.test.util; /** * 类名:<br> * 类说明:<br> * * @version V1.0 * @author lu7kang 2011-3-7 */ public class test { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub System.out.println(ErrorCode.sys_00.getMessage()); System.out.println(ErrorCode.sys_01.getMessage()); System.out.println(ErrorCode.sys_02.getMessage()); System.out.println(ErrorCode.sys_03.getMessage()); } }
运行结果:
请先登录系统
没有权限操作
登录超时
系统异常