java反射整理
可以通过某个类或者对象获得当前类的信息
例如存在Person类, p为实例化的对象,获得Class类c
Class c = Person.Class; // 通过具体类获得Class类
Class c = p.getClass(); // 通过具体对象获得Class类
Person p2 = (Person)c.newInstance();//通过Clsss类获取实例化对象
获的 c 的属性
Field f = c.getField(); //返回一个公共的属性的对象
Field[] fs = c.getFields(); //返回一个公共的属性的对象的数组
Field df = c.getDeclaredField(); //返回一个所有的属性的对象
Field[] dfs = c.getDeclaredFields(); //返回一个所有的属性的对象的数组
Field 的方法,设一个Field对象为f
int mod = f.getModifies() //获取修饰符代码,返回类型为int
String smod = Modifier.toString(mod)//获得修饰符名称,返回类型为String
Class c1 = f.getType(); //获取该属性的类型,返回类型Class
String name = f.getName(); //获取该属性名称,返回类型Stirng
获得c的构造器
Constructor con = c.getConstructors(); //返回一个公共构造器
Constructor[] cons = c.getDeclareConstructors(); //返回所有公共构造器的数组
Constructor con = c.getConstructors(); //返回一个所有构造器
Constructor[] cons = c.getDeclareConstructors(); //返回一个所有构造器的数组
实例化构造器
//传参要传形参的所属的类
Constructor[] con = c.getConstructors(Stirng.class, int.class);
//调用获得的构造方法
con.invoke(参数1, 参数2);
方法修饰符
int mod = con.getModifies() //获取修饰符代码,返回类型为int
String smod = Modifier.toString(mod)//获得修饰符名称,返回类型为String
参数的获得
Class[] cs = con.getParameterType() //获得形参数组,返回类型为Class数组
获得c的普通方法
Method con = c.getMethod(); //返回一个公共方法
Method[] cons = c.getDeclareMethods(); //返回所有公共方法的数组
Method con = c.getMethod(); //返回一个所有方法
Method[] cons = c.getDeclareMethods(); //返回一个所有方法的数组
实例化方法 f
//传参要传形参的所属的类
Method[] con = c.getConstructors("方法名",Stirng.class, int.class);
//调用获得的方法
con.invoke("方法名",参数1, 参数2);
方法修饰符
int mod = f.getModifies() //获取修饰符代码,返回类型为int
String smod = Modifier.toString(mod)//获得修饰符名称,返回类型为String
返回类型
Class c = f.getreturnType(); //获得返回类型的类,返回类型为classs
参数的获得
Class[] cs = f.getParameterType() //获得形参数组,返回类型为Class数组