版权声明:原创内容是本人学习总结,仅限学习使用,禁止用于其他用途。如有错误和不足,欢迎评论指正补充。 https://blog.csdn.net/qian_qian_123/article/details/82219765
需求说明
- 自定义注解,只能修饰方法,包含一个成员变量age,有默认值20
- 定义Student类,包含验证年龄的方法,使用自定义注解修饰,在此方法中读取注解中的年龄信息并进行判断,如果年龄在18岁以下,提示“未成年”,否则,提示“已成年”
- 定义测试类
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target ({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME) //自定义的注解,写成RUNTIME
public @interface MyAnnotation {
// 自定义注解,只能修饰方法,包含一个成员变量age,有默认值20
int age() default 20;
}
import java.lang.reflect.Method;
public class Student {
@MyAnnotation(age = 20)
public void checkAge() throws NoSuchMethodException, SecurityException {
Class clazz = Student.class;
Method meth = clazz.getMethod("checkAge");
boolean isFlag = meth.isAnnotationPresent(MyAnnotation.class);
int age=0;
if (isFlag) {
MyAnnotation myAnno = meth.getAnnotation(MyAnnotation.class);
age=myAnno.age();
} else {
System.out.println("没有注解!");
}
if(age>18)System.out.println("已成年");
else
System.out.println("未成年");
}
}
public class Test {
public static void main(String[] args) throws NoSuchMethodException, SecurityException {
new Student().checkAge();
}
}