Java反射机制是Java程序在运行状态下,动态获取类中的内容以及动态调用对象的方法。此篇是对Java反射机制的一些基础代码操作的简单总结。

1.Java反射机制概述

 Java反射机制就是在Java程序运行时,得到一个java类中的属性和方法;并可以调用已经给定对象的类中的构造方法、属性和方法。放射机制就是就像这样动态的获取类中构造方法、属性和方法以及动态调用对象的方法。

2.Java反射机制基础内容

 正常情况下如果已经有一个类,则可以通过类创建对象;那么如果想通过一个对象找到一个类的名称,就需要反射机制。

2.1 简单理解放射机制

 正常情况:引入需要的包—> new实例化—> 取得实例化对象
 反射方式:实例化对象—> 使用getclass()方法—>获取完整的“包.类”名称

2.2 静态实例化class方法

首先声明class对象

Class<?> c = null;

第一种:通过forName()方法

c = Class.forName(“包名.类名”) ;

此种方法最为灵活,因为只需要用字符串的方式当参数即可。

第二种:通过“类.class”方法

c = 类名.class;

第三种:通过“对象.getClass()”方法

c = new 类名().getClass();

2.3 实例化对象

注:以下所写的方法都是在上面第一种实例化之后的操作。

Class X{
	public String a;
	public int b;
	public double c;
	public int y;
	public String X(int arg){}
	public String X(){}
	public String W(String a,int b,double c){
		this.a = a;
		this.b = b;
		this.c = c;
		return a+“:”+b+“:”+c;
	}
}

注:以下的操作都是对X类操作
(1)通过无参构造实例化对象
	操作范例:
	X x = (X) c.newInstance();
	对象x就和正常方法实例化的对象使用一样。
	重点注意:
	  1.使用此方法时,被实例化对象的类中必须含有无参构造方法;
	  2.强制转化是因为:反射机制的一切的操作都将使用object完成。
(2)通过有参构造实例化对象
	操作步骤为:
	1.通过Class类中的getConstructors()获取类中全部构造方法;
	2.向构造方法中传递一个对象数组,其中包含构造方法所需的全部参数;
	3.然后通过Constructor实例化一个对象。
	操作范例为:
	Constructor<?> cons[] = c.getConStructors();
	//通过反射,获取全部构造方法将其赋值给构造方法数组。
	实例化过程:
	X x = (X) cons[0].newInstance(1);

2.4获取类的结构

将会使用到java.lang.reflect包,其中包含的功能有:
 Field:表示获取的类中属性。
 Method:表示获取的类中方法。
(1)获取属性
 ①获取父类或接口的属性

public Field[] getFields() throws SecurityException;

 ②获取此类的属性

public Field[] getDeclaredFields() throws SecurityExceptions;

 代码示例:

Filed f[] = c.getDeclaredFields();//获取本类中的属性
Class<?> r = f[0].getType();//获取属性类型
int m = f[0].getModifiers();//获取权限的编号
String pri = Modifier.toString(m); //将权限转化为修饰符

(2)获取类中的方法并对其进行调用
 ①获取方法的Class方法为

public Method[] getMethods() throws SecurityException;

 ②通过反射机制调用类中方法:

public object invoke(Object obj,Object ...args);

 代码如下:

Class<?> c=Class.forName(“X”);
Method m = c.getMethod(“W”,String.class,int.class,double.class);//参数的个数与类型根据实际方法
Stringrs=(String)m.invoke(c.newInstance(),"小哈",20,3.2);//调用方法

3.小结

 在计算机领域中,反射是指程序可以访问、检测和修改它本身状态和行为的能力。反射机制是java提供的一项强大功能,是一种实现面向抽象编程的方式,其使代码语句更加灵活,极大的提高代码的运行时装配能力。此上是通过对class类中的一些方法从而对反射机制进行的初步了解。