java解析注解

自定义注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Pro {
    String className();
    String methodName();
}

解析注解

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

@Pro(className = "mystring.demo4.Student",methodName = "say")
public class ProTest {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {

        //解析注解
        Class<ProTest> proTestClass = ProTest.class;
        //获取注解对象
        Pro annotation = proTestClass.getAnnotation(Pro.class);
        //获取注解属性
        String className = annotation.className();
        String methodName = annotation.methodName();

        //类反射
        Class<?> aClass = Class.forName(className);
        Object instance = aClass.newInstance();
        Method method = aClass.getMethod(methodName);
        method.invoke(instance);
    }
}


posted @ 2021-05-04 17:31  code-G  阅读(122)  评论(0编辑  收藏  举报