基本概念
反射是java在运行过程中的自我观察能力,通过class constructor field method 四个方法来获取一个类的各个组成部分。
反射是在运行状态中对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象都能调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为反射
作用:
反射的作用:
1、可以得到类的全部成分并进行操作
2、破坏类的封装型-----可以获取私有的构造器、方法、成员变量等
3、做java框架
操作
1、加载类,获取类的字节码:class对象
- Class c1=类名.class
- 调用Class提供的方法:public static Class forName(String Package)
- Object提供的方法:public Class getClass();Class c3=对象.getClass()
2、获取类中的构造器,并对他进行操作
(1)getConstructors()方法:可以获取全部的有public 修饰的构造器,在开发中很少使用
(2)getDeclaredConstructors()方法:获取全部构造器,只要存在就获取
(3)getConstructor()方法:获取某个构造器,且其只能被public修饰
(4)getDeclaredConstructor()方法:获取某个构造器,只要存在即可获取
在获取有参数的构造器时参数应写为 参数类型.class(例如 String.class),因为此时class就代表类型
初始化
提供newInstance()方法是用来实现初始化,setAccessible()方法设置为true时,表示禁止查询访问控制,即此时是私有化也可以进行初始化了
3、获取成员变量及其相关操作
4、获取类的成员方法并对其进行操作
和构造器、成员变量相同的