自定义注解
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); } }