反射是对象---->类 在java中,只要给定类的名字, 那么就可以通过反射机制来获得类的所有信息。
Class类对象;JAVA中万事万物都是对象,任何创建的类都是Class类的对象,反射其实就是对Class类的API的应用
获取Class类对象的方法:
1.对象.getClass();
Class c1 = ch.getClass();
System.out.println("+++"+c1);
2.类名.class
Class c2 = Teacher.class;
System.out.println("c2"+c2);
3,Class.forName(类的全名);
Class c3 = Class.forName("反射.Teacher");
API常见的用法
返回类的注释
c3.getAnnotations();
//获得Class类对象的名字
c3.getName();
获取该类的包名
c3.getPackage();
根据类创建对象
c3.newInstance();
通过获取的类对象得到该类的构造方法;
// 根据反射获取类可见的构造方法,私有的将不可见
Constructor[] con1 = c3.getConstructors();
///根据反射获取全部的构造方法,私有的也可见
Constructor[] con2 = c3.getDeclaredConstructors();
// 通过指定的参数获取全部的构造方法
Constructor c = c3.getDeclaredConstructor(String.class, int.class);
//如果需要操作的构造方法为私有的,设置其为可造作的
c.setAccessible(true);
// 根据得到的构造方法创建对象
Object ob = c.newInstance("wang", 23);
2,通过获得的类对象获得该类的属性;
//获得所有的可见的属性
Field[] f1 = c3.getFields();
//获取全部的属性
Field[] f2 = c3.getDeclaredFields();
//根据指定名称的可见属性获取
Field f3 = c3.getField("name");
//设置属性可见
f3.setAccessible(true);
//根据指定名称的全部属性获取
获取类对象的方法,创建动态数组.......