import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class InvokeHandle {
public static void callMethod(String className,String methodName){
try {
Object obj=Class.forName(className).newInstance();
Class cls=obj.getClass();
System.out.println("父类是:"+cls.getSuperclass().getName());
//得到这个类的属性变量
Field[] fields=cls.getDeclaredFields();
System.out.println("成员变量有:");
for(Field f:fields){
System.out.println(f.getName()+" *** ");
}
System.out.println("=====================");
Method[] methods=cls.getDeclaredMethods();
System.out.print("方法有:");
for(Method method:methods){
System.out.println(method.getName()+" ");
}
System.out.println("=====================");
Method targetMethod=cls.getMethod(methodName,null);
targetMethod.invoke(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
写一个简单的方法:
public class DepartService {
public void getDepartById(){
System.out.println("我通过id得到部门");
}
}
写一个学生类测试一下:
public class StudentTest {
public static void main(String[] args) {
//传统的调用方法
Student student=new Student();
student.setUsername("afei");
student.test();
System.out.println();
InvokeHandle.callMethod("service.DepartService","getDepartById");
}
}
有写的不好的地方请多交流。
希望对你们有帮助!!!