@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyTypeAnnotation {
String title() default "";
String cloum() default "";
}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyMethodAnnotation {
public String title() default "";
public String description() default "";
}
@MyTypeAnnotation(title = "测试类",cloum = "test")
public class TestMethodAnnotation {
@Override
@MyMethodAnnotation(title = "toStringMethod",description = "Override toString method")
public String toString(){
return "Override toString method";
}
}
@Test
public void getAnnotation(){
MyTypeAnnotation annotationType = TestMethodAnnotation.class.getAnnotation(MyTypeAnnotation.class);
System.out.println(annotationType.title()+":::"+annotationType.cloum());
Field[] declaredFields = TestMethodAnnotation.class.getDeclaredFields();
List<Field> fieldList=new ArrayList<>();
for (int i=0;i<declaredFields.length;i++){
declaredFields[i].setAccessible(true);
fieldList.add(declaredFields[i]);
}
for (Field field : fieldList) {
MyMethodAnnotation annotationMethod = field.getAnnotation(MyMethodAnnotation.class);
System.out.println(annotationMethod.title()+":::"+annotationMethod.description());
}
}