通过反射技术对对象类进行解剖得到了类的所有成员和方法。
可以利用反射在程序运行过程中对类进行解剖并操作类中的所有成员(成员变量,成员方法,构造方法)。
首先要获得该类字节码文件对象,也就是class对象。
开发IDE(集成开发环境),比如IDEA,Eclipse
各种框架的设计和学习 比如Spring,Hibernate,Struct,Mybaits....
总结:反射是框架设计的灵魂,能够让框架更具有通用性,灵活性。
方式1:通过类名.class获得。
方式2:通过对象名.getClass()方法获得。
方式3:通过Class类的静态方法forName获得
代码演示:
打印输出:
总结:三个方式获取的为同一个class对象。
1.获得类名字符串:类名 String getSimpleName();
2.获得类全名:包名+类名 String getName();
3.创建Class对象关联类的对象【依赖无参构造而存在】 T newInstance() ;
代码演示:
打印输出:
//获取单个指定参数的构造方法
1. Constructor getConstructor(Class... parameterTypes)
* 根据参数类型获得对应的Constructor对象,按照构造方法的参数类型及顺序传入
* 只能获得public修饰的构造方法
public Student(int age,String name){}
2. Constructor getDeclaredConstructor(Class... parameterTypes)
* 根据参数类型获得对应的Constructor对象
* 可以是public、protected、package-private、private修饰符的构造方法。
//获取所有符合条件的构造方法
3. Constructor[] getConstructors()
* 获得类中的所有构造方法对象,只能获得public的
4. Constructor[] getDeclaredConstructors()
* 获得类中的所有构造方法对象
* 可以是public、protected、package-private、private修饰符的构造方法。
代码演示:
打印输出: