代码如下:
package ClassObjectPack01;import ClassObjectPack.Student;import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class ReflectDemo05 {public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {Class<?> c = Class.forName("ClassObjectPack.Student");//Method getMethod(String name, 类<?>... parameterTypes)//返回一个 方法对象,它反映此表示的类或接口的指定公共成员方法 类对象。//Method[] getMethods()//返回包含一个数组 方法对象反射由此表示的类或接口的所有公共方法 类对象,包括那些由类或接口和那些从超类和超接口继承的声明。//方法 getDeclaredMethod(String name, 类<?>... parameterTypes)//返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 类对象。//方法[] getDeclaredMethods()//返回包含一个数组 方法对象反射的类或接口的所有声明的方法,通过此表示 类对象,包括公共,保护,默认(包)访问和私有方法,但不包括继承的方法。Method[] methods = c.getMethods();for (Method method:methods){System.out.println(method);}System.out.println("-----------------------------------------");Method[] methods01 = c.getDeclaredMethods();for (Method method:methods01){System.out.println(method);}System.out.println("------------------------------------------");Method m = c.getMethod("method1");Constructor<?> con = c.getConstructor();Object obj = con.newInstance();//在类或接口上提供单一方法的信息和访问权限。//Object invoke(Object obj, Object... args)//在具有指定参数的 方法对象上调用此 方法对象表示的底层方法。//object:返回值类型//obj:调用方法的对象//args:方法需要的参数m.invoke(obj);// Student s = new Student();
// s.method1();}
}
测试结果: