反射就是:加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)。
1、反射第一步:加载类,获取类的字节码:Class对象
获取Class对象的三种方式:
1.直接使用类名.class获取:Class c1 = 类名.class
2.调用Class提供的方法:Class c2 = Class.forName("全类名")
3.调用Object提供的方法:Class c3 = 对象.getClass()
2.获取类的构造器
类中获取构造器的方法:
从类中获取构造器的方法:
获取类构造器的作用:初始化对象返回:
操作示例:
运行结果:
3.获取类的成员变量
从类中获取成员变量的方法:
获取到成员变量的作用
操作实例:
4.获取类的成员方法
从类中获取成员方法的API:
成员方法的使用:
反射的作用:
1.可以在运行时得到一个类的全部成分然后操作
2.可以破坏封装性,也可以破坏泛型的约束性,更重要的用途是适合:做Java高级框架
3.基本上主流框架都会基于反射设计一些通用技术功能