反射是一个比较生涩难懂的概念,为了形象,我先举一个例子,我们有时候项目中会用mysql,有时会用到sqlserver等数据库。我们实际情况是需要哪个驱动类才会去加载,不会把这些数据库加载驱动都加载到JVM里面,如果都加载,岂不是JVM可用的内存就少了,这对服务器来说就很难受了,内存中存在一些经常不用的驱动类。
因此我们需要在动态去加载我们需要的驱动。如果不是动态加载,如果静态加载的话,那么就是这样的情况,要切换数据库驱动的时候,我们就把服务停下来,new一个需要的驱动,这对用户来说体验极差,肯定不行啊。因此我们就会采用动态加载。
反射机制就是采用这种动态加载,我们通过三种方法获得Class:
然后获得了Class后,我们就可以调用Class对象的newInstance()方法来创建Class对象对应类的实例了;或者通过获得构造器(类一定要有空参构造),给构造器传入参数,也可创建实例。