(1) Class c = 类名.class;
(2) Class c = Class.forName("包名.类名");
(3) Class c = 对象.getClass();
Constructor[] cons = c.getConstructors();// 获取public修饰的所有构造器
Constructor[] cons = c.getDeclaredConstructors();// 获取所有构造器
Constructor con = c.getConstructor(参数类型.class);// 获取指定参数类型的public修饰的构造器
Constructor con = c.getDeclaredConstructor(参数类型.class);// 获取指定参数类型的构造器
使用构造器:
con.setAccessible(true);//暴力反射,true可以调用私有构造器
Object 类 = con.newInstance(参数...);
Field[] fs = c.getFields();// 获取所有public修饰的成员变量
Field[] fs = c.getDeclaredFields();// 获取所有成员变量
Field f = c.getField("变量名");// 获取指定变量名的public修饰的变量
Field f = c.getDeclardeField("变量名");// 获取指定变量名的变量
使用成员变量:
f.setAccessible(true);// 暴力反射,true可以调用私有成员变量
f.getName();//获取变量名称
f.getType();//获取变量类型
f.set(对象, 值);// 设定指定对象的变量f的值
f.get(对象);//获取指定对象的成员变量的值
Method[] ms = c.getMethods();// 获取Public修饰的所有成员方法
Method[] ms = c.getDeclaredMethods();// 获取所有成员方法
Method m = c.getMethod(方法名, 参数类型);// 获取指定名称和类型的public修饰的方法
Method m = c.getDeclaredMethod(方法名, 参数类型);// 获取指定名称和类型的方法
使用成员方法:
m.setAccessible(true);// 暴力反射,true可以调用私有方法
m.getName();//获取方法名
m.getParameterCount();//获取参数个数
m.getResultType();//获取返回值类型
m.invoke(对象, 参数);//执行指定对象的m方法,传相应的参数。返回Object, void返回null。