import java.lang.annotation.Target;
/**
* 字段注解定义
* @author Owner
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyFieldAnnotation {
String uri();
String desc();
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 字段注解定义
* @author Owner
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyFieldAnnotation {
String uri();
String desc();
}
最后定义一个测试类
[java]
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@MyClassAnnotation(desc="The class name", uri="com.annotation.MySample")
public class MyTest {
@MyFieldAnnotation(desc="The class field", uri="com.annotation.MySample#id")
private int id;
@MyConstructorAnnotation(desc="The class constructor", uri="com.annotation.MySample#MySample")
public MyTest(){}
public int getId() {
return id;
}
@MyMethodAnnotation(desc="The class method", uri="com.annotation.MySample#setId")
public void setId(int id) {
this.id = id;
}
public static void main(String[] args) throws Exception {
Class
//得到类注解
MyClassAnnotation myClassAnnotation = clazz.getAnnotation(MyClassAnnotation.class);
System.out.println(myClassAnnotation.desc()+" "+myClassAnnotation.uri());
//得到构造方法注解
Constructor
MyConstructorAnnotation myConstructorAnnotation = cons.getAnnotation(MyConstructorAnnotation.class);
System.out.println(myConstructorAnnotation.desc()+" "+myConstructorAnnotation.uri());
//获取方法注解
Method method = clazz.getMethod("setId", new Class[]{int.class});
MyMethodAnnotation myMethodAnnotation = method.getAnnotation(MyMethodAnnotation.class);
System.out.println(myMethodAnnotation.desc()+" "+myMethodAnnotation.uri());
//获取字段注解
Field field = clazz.getDeclaredField("id");
MyFieldAnnotation myFieldAnnotation = field.getAnnotation(MyFieldAnnotation.class);
System.out.println(myFieldAnnotation.desc()+" "+myFieldAnnotation.uri() );
}
}
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@MyClassAnnotation(desc="The class name", uri="com.annotation.MySample")
public class MyTest {
@MyFieldAnnotation(desc="The class field", uri="com.annotation.MySample#id")
private int id;
@MyConstructorAnnotation(desc="The class constructor", uri="com.annotation.MySample#MySample")
public MyTest(){}
public int getId() {
return id;
}
@MyMethodAnnotation(desc="The class method", uri="com.annotation.MySample#setId")
public void setId(int id) {
this.id = id;
}
public static void main(String[] args) throws Exception {
Class
//得到类注解
MyClassAnnotation myClassAnnotation = clazz.getAnnotation(MyClassAnnotation.class);