//获取Class对象Class<?> c =Class.forName("cn.qileyun.Student");// Constructor<?>[] cons = c.getConstructors();//返回所有的公共构造方法,Constructor<?>[] cons = c.getDeclaredConstructors();//返回所有的构造方法for(Constructor<?> con : cons){System.out.println(con);}System.out.println("---------");Constructor<?> con = c.getConstructor();//返回一个Constructor公共对象其中一个 传入什么参数调用什么构造方法
c.getDeclaredConstructor();//返回一个Constructor对象其中一个//Constructor提供一个类的单个构造方法的信息和访问权限//T newInstance(Object... initargs) 使用由此Constructor对象表示的构造函数,使用指定的初始化参数来创建和初始化构造函数Object obj = con.newInstance();//通过构造方法来创建对象System.out.println(obj);Object o = c.newInstance();System.out.println(o);//默认调用无参构造方法
调用有参的构造方法
Class<?> c =Class.forName("cn.qileyun.Student");//调用有参的构造方法Constructor<?> constructor = c.getConstructor(String.class,int.class,String.class);Object o = constructor.newInstance("林青霞",30,"西安");System.out.println(o);
调用非公共的构造方法
Class<?> c =Class.forName("cn.qileyun.Student");Constructor<?> declaredConstructor = c.getDeclaredConstructor(String.class);//暴露反射
declaredConstructor.setAccessible(true);//值为true,取消访问检查Object o = declaredConstructor.newInstance("林青霞");System.out.println(o);
返回成员变量
Class<?> c =Class.forName("cn.qileyun.Student");// Field[] fields = c.getFields();//拿公共成员变量Field[] fields = c.getDeclaredFields();//拿全部成员变量for(Field field : fields){System.out.println(field);}System.out.println("----------");Field address = c.getField("address");//公共// Field address = c.getDeclaredField("address");//私有//获取无参构造方法创建对象Constructor<?> constructor = c.getConstructor();Object obj = constructor.newInstance();//Field提供有关类或接口的单个字段的信息和动态访
address.set(obj,"西安");//给obj的成员变量address 赋值为西安
私有的成员变量赋值
Class<?> c =Class.forName("cn.qileyun.Student");Constructor<?> constructor = c.getConstructor();Object o = constructor.newInstance();Field name = c.getDeclaredField("name");//暴力反射
name.setAccessible(true);
name.set(o,"林青霞");System.out.println(o);