public class TestInvokeAnything {
public static void mian(String[]args) throws Exception{
Object o=invokeAny(createObject("com.qf.Day35.t1.Student"),"exam",new Class[] {int.class,double.class,String.class},1,2,"嘿嘿");
invokeAny(o,"study",null,null);
invokeAny(o,"study",new Class[] {int.class},100);
}
public static Object invokeAny(Object obj,String methodName,Class[]types,Object...args)throws Exception {
Class c=obj.getClass();
Method m=c.getDeclaredMethod(methodName, types);
return m.invoke(obj, args);
}
public static Object createObject(String className) {
try {
Class c=Class.forName( className);
return c.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return className;
}
}
import java.lang.reflect.Method;
public class TestInwokeMethod {
public static void main(String[]args)throws Exception {
Object o=createObject("com.qf.Day35.t1.Student");
Class c=o.getClass();
Method a=c.getMethod("study",null);
a.invoke(o,null);
Method c2=c.getMethod("study", int.class);
c2.invoke(o,111);
Method c3=c.getMethod("exam", int.class,double.class,String.class);
c3.invoke(o, 3,100,"lili");
}
public static Object createObject(String className) {
try {
Class c=Class.forName( className);
return c.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
class Student{
String name;
Integer age;
String sex;
Double score;
public Student() {
}
public Student(String name,Integer age,String sex,Double score) {
this.name=name;
this.age=age;
this.sex=sex;
this.score=score;
}
public void study() {
System.out.println("正在学习");
}
public int study(int a) {
System.out.println("学习"+a+"个小时");
return 0;
}
public void exam(int a,double b,String s) {
System.out.println(s+"正在考试"+a+"个小时的"+"考了"+b+"分");
}
}