什么是反射?

    想要理解反射的概念,首先我们需要了解代码在JVM中是经过了怎样的处理并最终正常运行的。当我们写完代码编译完成后,将其放入容器启动我们的程序,这时JVM会把编译好的文件通过类加载器加载到JVM内存中,每个类会为其创建一个class对象。当程序执行到new某个类的时候,JVM首先会检查类是否已经被加载了,如果已经被加载好了,则会为你的对象分配内存。而反射是说,当我们的程序运行时,不会把所有类都加载到JVM中,而是根据运行时根据需要才加载。

    为什么要用反射?

    反射的编码方式对于功能后期维护成本是非常小的,比如没有反射的情况下,我们去实现Animal接口的Dog类,Animal接口有一个叫的方法,Dog类实现了这个方法,所以我们要让狗叫,你代码需要写成如下格式,

    Animal object = new Dog(),那么后期需求变了,不是让狗叫了而是让猫叫了,这对于之前的代码来说,你就需要

    改了,不能new Dog了,而需要改成new Cat了,而如果用反射的方式进行编码,则只需要改动配置文件中的配置即可,代码是完全不需要动的,反射的写法是Class object = Class.forName(写在配置中需要实例化的类),这样

    如果要从狗叫换成猫叫,就完全不需要修改代码,只需要修改配置文件中的配置就搞定了。

    对于反射的反思?

    个人角度认为反射这个东西,其实是比较抽象的,就像用惯了面向过程的思想去编码,第一次接触面向对象的思想时,感觉非常难以理解,当你用的多,多接触,慢慢的自然会发现其中的精妙,所谓量变引起质变,习惯成自然,

    之后要把自己在工作过程中对反射的应用补充到笔记中,督促自己去使用反射,掌握反射。