JAVA中的反射机制详解

豆豆网   技术应用频道   2007年10月15日    社区交流

内容摘要:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

  Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。

  1.得到某个对象的属性

1publicObjectgetProperty(Objectowner,StringfieldName)throwsException{
2  ClassownerClass=owner.getClass();
3
4  Fieldfield=ownerClass.getField(fieldName);
5
6  Objectproperty=field.get(owner);
7
8  returnproperty;
9}

  ClassownerClass=owner.getClass():得到该对象的Class。

  Fieldfield=ownerClass.getField(fieldName):通过Class得到类声明的属性。

  Objectproperty=field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。

  2.得到某个类的静态属性

1publicObjectgetStaticProperty(StringclassName,StringfieldName)
2      throwsException{
3  ClassownerClass=Class.forName(className);
4
5  Fieldfield=ownerClass.getField(fieldName);
6
7  Objectproperty=field.get(ownerClass);
8
9  returnproperty;
10}

  ClassownerClass=Class.forName(className):首先得到这个类的Class。

  Fieldfield=ownerClass.getField(fieldName):和上面一样,通过Class得到类声明的属性。

责编:豆豆技术应用

正在加载评论...