一、什么是反射?
Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。
二、反射的三种方式
这里需要跟大家说一下,所谓反射其实是获取类的字节码文件,也就是.class文件,那么我们就可以通过Class这个对象进行获取。
1、第一种方式
这个方法其实是Object的一个方法,Class继承了Object,所以我们可以直接使用。
2、第二种方式
3、第三种
这里需要注意,通过类的全路径名获取Class对象会抛出一个异常,如果根据类路径找不到这个类那么就会抛出这个异常。
那么这3中方式我们一般选用哪种方式呢?第一种已经创建了对象,那么这个时候就不需要去进行反射了,显得有点多此一举。第二种需要导入类的包,依赖性太强。所以我们一般选中第三种方式。
三、通过反射获取类的构造方法、方法以及属性
1、获取构造方法
结果:
2、获取类属性
结果
这里需要注意,在获取私有属性的时候如果没有进行暴力反射,那么会抛出下面这个异常。
3、获取类中的方法
先定义几个方法
正题
结果
这里需要注意的就是当一个方法需要传入多个参数值的时候,一定要注意。踩了一点坑。
四、反射执行main方法
反射调用
这里需要告诉大家,在导String包的时候千万要看清楚,我在这填了20多分钟的坑。
五、总结
看到这里你已经对反射有了一个简单的了解,可以使用反射获取一些属性方法,其实我们平时写代码很少用到反射技术,但是在我们使用的一些主流框架中反射技术应用是非常广泛的,所以学好反射也是非常有必要的。
今天就写到这里,下篇给大家分享一下利用反射做一些有应用型的例子。