学习目标:
1、了解Java的反射的意义
2、掌握反射的基本语法
学习过程:
一、反射简介
反射的概念 :反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。反射是一个非常重要的底层技术,在java中很多框架技术的实现所用的底层技术的支持就是反射。
JAVA反射机制主要提供了以下功能:
-
在运行期判断任意一个对象所属的类。
-
在运行期构造任意一个类的对象。
-
在运行期判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)。
-
在运行期调用任意一个对象的方法。
反射对一个类,和该类的所有的属性,构造方法和普通方法都抽象了相关的类。位于java.lang.reflect包中,具体如下:
-
Class类:代表一个类
object.getClass()得到一个Class类,
class.newInstance()得到一个Object
Class
-
Filed类:代表类的成员变量
Field field[] = class.getFields();
field[0].getName(); field[0].getType();
-
Method类:代表类的方法
Method m[] = class.getMethods();
m[0].invork(); //执行方法
-
Constructor类:代表类的构造方法
Constructor cst[] = class.getConstructors();
Class[] params = cs.getParameterTypes();
二、反射示例
新建一个Student类,这个类非常简单,有三个属性、两个构造方法和三个普通方法。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
下面我们可以通过反射的方法,“阅读”这个类。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
|
首先我们通过Class.forName()方法加载类,然后我们获得该类的Class对象,通过这个对象我们可以构造一个对象(newInstance()方法),获得这个类的所有的属性,所有的构造方法,构造方法的参数类型;还可以获得所有的普通方法,普通方法的参数类型,最后我们通过反射获得message方法,并调用了这个方法。