Java注解的使用,类似于C#的Attribute

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

原文地址:https://www.cnblogs.com/duanjt/p/6924795.html