*## 反射总结《一》 ##*
获取class
Object obj = new Object();
//第一种方式,已经创建对象了,反射什么?一般用不到。
Class clazz = obj.getClass();
// 第二种方式
clazz = String.class;
//第三种
try {
clazz = Class.forName("包.类");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
获取构造方法
“`//获取指定的public构造方法 Constructor con = clazz.getConstructor(); //获取所有的public构造方法 Constructor[] cons = clazz.getConstructors(); //获取指定的任意权限的构造方法 con=clazz.getDeclaredConstructor(); //获取所有的任意权限的构造方法 cons=clazz.getDeclaredConstructors();
``获取指定的构造方法参数写法:
//获取无参构造方法
con = clazz.getConstructor(null);
con = clazz.getConstructor();//获取一参构造方法 con = clazz.getConstructor(String.class); //获取多参构造方法,按参数类型顺序依次列出。 con = clazz.getConstructor(String.class,int.class,Boolean.class);`
通过反射创建对象
obj = con.newInstance(“str”,10086,false,类.class);获取成员变量
Field field = clazz.getField(变量名);
获取对象obj上的变量值:field.get(obj )
修改对象obj上的变量值:field.set(obj,value )获取成员方法
Method me = clazz.getMethod(方法名,参数1.class,参数2.class) //返回值为void 可写null
执行obj的方法:me.invoke(obj,参数1,参数2)