package cn.ljz.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Test {
public int id();
public String name() default "lidong";
public int age();
public Test2 test2() default Test2.FILE;
}
package cn.ljz.annotation;
public enum Test2 {
JSON,
FMJSON,
FMLOADJSON,
FJSON,
TEXT,
FILE
}
package cn.ljz.annotation;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
public class Main {
public void test1(@Test(id = 0, age = 0) String a){
}
public void test2(@Test(id = 0, age = 0,name="yyl") String b){
}
public void test3(@Test(id = 10, age = 10,name="yyl") int c){
}
public static void main(String[] args) {
Method[] m = Main.class.getDeclaredMethods();
Annotation[][] an = null;
for(Method method:m){
an = method.getParameterAnnotations();
System.out.println(method.getParameterTypes() );
if(an.length>0){
for(int i=0;i<an.length;i++){
for(int j=0;j<an[i].length;j++){
Test t = (Test) an[i][j];
System.out.println(method.getName()+","+t.age()+","+t.id()+","+t.name()+","+t.test2());
}
}
}
}
}
}