package com.itheima.demo03;
public class Student {
@MyTest
public void eat1(){
System.out.println("吃吃吃....");
}
@MyTest
public void drink2(){
System.out.println("喝喝喝....");
}
}
package com.itheima.demo03;
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)
public @interface MyTest {
}
package com.itheima.demo03;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
public class demo {
public static void main(String[] args){
Class aClass = null;
try {
aClass = Class.forName("com.itheima.demo03.Student");
Object object = aClass.getConstructor().newInstance();
Method[] methods = aClass.getMethods();
Arrays.sort(methods,(m1,m2)->m1.getName().compareTo(m2.getName()));
for (Method method : methods) {
if (method.isAnnotationPresent(MyTest.class)){
method.invoke(object);
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}