Java反射机制详解
2017-06-08 本文已影响0人
李honghai
1反射机制是什么
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2反射机制能做什么
反射机制主要提供了以下功能:
在运行时判断任意一个对象所属的类;
在运行时构造任意一个类的对象;
在运行时判断任意一个类所具有的成员变量和方法;
在运行时调用任意一个对象的方法;
生成动态代理。
3反射机制的相关API
3.1通过一个对象获得完整的包名和类名
![](https://img.haomeiwen.com/i6101931/4c8ed392cd0af273.png)
3.2实例化Class类对象
![](https://img.haomeiwen.com/i6101931/12ed4a0531be7768.png)
3.3获取一个对象的父类与实现的接口
![](https://img.haomeiwen.com/i6101931/0d65c710d4e90f15.png)
3.4获取某个类中的全部构造函数 - 详见下例
通过反射机制实例化一个类的对象
![](https://img.haomeiwen.com/i6101931/a7f0aa2f6ea83e8b.png)
![](https://img.haomeiwen.com/i6101931/9c941030eb38fc61.png)
3.5获取某个类的全部属性
![](https://img.haomeiwen.com/i6101931/cc287fc68969629b.png)
3.6获取某个类的全部方法
![](https://img.haomeiwen.com/i6101931/ca95b85934becc0f.png)
3.7通过反射机制调用某个类的方法
![](https://img.haomeiwen.com/i6101931/44b7ca8b0d6a993e.png)
3.8通过反射机制操作某个类的属性
![](https://img.haomeiwen.com/i6101931/553b35aaa72f1001.png)
3.9反射机制的动态代理
![](https://img.haomeiwen.com/i6101931/ebc8a945296b67f2.png)
![](https://img.haomeiwen.com/i6101931/9c2a034fb9a2e41d.png)
4反射机制的应用实例
4.1在泛型为Integer的ArrayList中存放一个String类型的对象。
![](https://img.haomeiwen.com/i6101931/9317bf2b19721f0c.png)
4.2通过反射取得并修改数组的信息
![](https://img.haomeiwen.com/i6101931/f694f33ca456d7a5.png)
4.3通过反射机制修改数组的大小
![](https://img.haomeiwen.com/i6101931/338845091d2c7ffb.png)
4.4将反射机制应用于工厂模式
![](https://img.haomeiwen.com/i6101931/645f5798a7c4d04e.png)
![](https://img.haomeiwen.com/i6101931/9ed3c16ffce13e76.png)