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);
}
}