首页 > 代码库 > Java反射

Java反射

一、反射机制有关的类大多在java.lang.reflect包中。

常用类:

    java.lang.Class<T>  类类型

    java.lang.reflect.Method  方法类型

    java.lang.reflect.Field  字段类型

二、常用方法:

获得类的类类型:

Class cla1=String.class;Class cla2=UserEntity.class;

try {	Class cla=Class.forName("UserEntity");} catch (ClassNotFoundException e1) {	e1.printStackTrace();}

Class	clazz 	=	 obj.getClass ();

根据类名创建类的对象:

String	 className 	=	 "com.xyz.entity.Car ";	Object	 obj 	=	 Class.forName (className ).newInstance();
获取方法:
使用Class类中的方法:
public Method getMethod(String name,                        Class<?>... parameterTypes);//获取类的指定方法。第一个参数:方法名;第二个参数:方法中参数的类型
public Method[] getMethods();//获取类的全部方法

示例:

Method	method	=	 clazz.getMethod("start" );

执行方法:

method.invoke(obj); 

获得类中的字段:

public Field getDeclaredField(String name);public Field[] getDeclaredFields();
//Field类中
String fieldName=field.getName();//获得字段的属性名
Class fieldType=field.getType();//获得字段的属性值
String typeStr=fieldType.toString();//结果:class java.lang.String

还有(下面这两个还没用过):

public Field getField(String name);public Field[] getFields();

获得类的属性值:

Field类中的方法:

public Object get(Object obj);

使用示例:

TestEntity testEntity = new TestEntity();Field[] fds = Class.forName("com.xyz.entity.TestEntity").getDeclaredFields();for(int i=0;i<fds.length;i++){	System.out.println(fds[i].get(testEntity));}

三、在项目中的应用

    如:java反射执行实体类中的set/get方法。例子:java反射执行pojo中的set/get方法  

待续……

Java反射