获取class类对象
- Class c1=Student.class;
- Class< ?extends Student> c3=s.getClass();
- Class<?> c4=Class.forName(“test.Student”);
正常方法获取对象:
Student s=new Student(“linqingxia”,30,“xian”);
反射的形式获取对象
Class<Student> c1=Student.class;
Class< ?extends Student> c2=s.getClass();
Class<?> c3=Class.forName("test.Student");
反射的形式获取公共构造函数
Class<?> c=Class.forName("test.Student");//具体路劲
Constructor<?> con=c.getConstructor(String.class,int.class,String.class);//获取公共的构造函数
Object obj=con.newInstance("linqingxia",30,"xian");
System.out.println(obj);
反射的形式获取私有构造函数
Class<?> c=Class.forName("test.Student");//具体路劲
Constructor<?> con=c.getDeclaredConstructor(String.class)//获取公共的构造函数
Object obj=con.newInstance("linqingxia",30,"xian");
System.out.println(obj);
反射的形式获取变量
Class<?> c=Class.forName("test.Student");
Field[] fields=c.getFields();//获取公共的
for(Field field:fields){
System.out.println(field);
}
Class<?> c=Class.forName("test.Student");
Field[] fields=c.getDeclareFields();//获取非公共的
for(Field field:fields){
System.out.println(field);
}
反射形式给变量赋值
Field fields1=c.getDeclaredFields("address");
Constructor<?> con=c.getConstructor();
Object obj=con.newInstance();
fields1.set(obj,"西安");