1.定义注解,代码如下:
import java.lang.annotation.*; /** * 定义注解类,用于注解某个类或方法 * * @author Administrator * */ @Target(ElementType.METHOD)//表示用于标识方法 @Retention(RetentionPolicy.RUNTIME)//表示运行时保留 public @interface TableColumn { /** * 数据库字段 * * @return */ String dbName() default ""; /** * 表单名称 * * @return */ String fieldName(); /** * 备注 * * @return */ String remark() default "无"; }
Target的取值如下:
1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型) 或enum声明
Retention的取值如下(常用RUNTIME):
1.SOURCE:在源文件中有效(即源文件保留)
2.CLASS:在class文件中有效(即class保留)
3.RUNTIME:在运行时有效(即运行时保留)
使用代码如下:
public class Student { @TableColumn(dbName="detect_time", fieldName = "detectTime", remark = "采集时间") public void PrintMsg(String msg) { System.out.println("nihaoya" + msg); } }
读取代码如下:
import java.lang.reflect.*; import sun.misc.*; public class Hello { public static void main(String[] args) { Method[] methods = Student.class.getDeclaredMethods(); for (Method m : methods) { System.out.println(m.getName()); TableColumn tc = (TableColumn) m.getAnnotation(TableColumn.class); System.out.println(tc.remark()); } } }
原文参考:
http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
http://www.cnblogs.com/peida/archive/2013/04/26/3038503.html