框架:半成品软件,可以在框架的基础上进行软件开发,简化编码。
反射:在程序运行状态中,对任意一个类(指的是.class文件),都能够知道这个类的所有的属性和方法。
将类的各个组成部分封装为其他对象,这就是反射机制。
能动态获取对象的信息就称为反射。
反射的好处:1、可以在程序运行过程中,操作这些对象。
2、 可以解耦,提高程序的可扩展性。
获取Class对象上的方式:
1、Class.forName("全类名") :将字节码文件加载进内存,返回Class对象;{Java代码编译以及编译之前}{多用于配置文件}
2、类名.Class :通过类名的属性class获取;{类加载器加载进内存}{多用于参数传递}
3、对象.getClass() : .getClass()在Object类中定义{程序运行中}{多用于通过对象获取字节码的方式}
结论
同一字节码文件(*.class)在一次程序运行过程中,指挥被加载一次,无论通过哪一种方式获取的class对象都是同一个。
Class对象的功能:
获取功能:1、获取成员变量2、获取构造方法3、获取成员方法4、获取类名
通过getXxx()方法只能获取被public修饰的成员变量、方法。当需要获取被private protect 默认这三种权限修饰符修饰的变量、方法时 需要忽略访问权限修饰符的安全检查,具体方法为 通过Class对象获取的fieid对象|ConStructe对象|Method对象 的setAccessible(true)方法,这种方法称之为暴力反射。
因为在项目中用到反射,最深的体会是 技术重要,但是应用场景也是非常重要的
应用场景:项目中关于系统的一些(静态)参数定义在一个类中,当在程序运行时动态修改这些参数后,需要应用于系统而不必去重新打包、发版,因而反射在这里就显得非常好用。
本文暂时没有评论,来添加一个吧(●'◡'●)