java反射技术说明

      java反射在java的学习中是一个比较难理解的技术.举个例子可以更加清楚的说明:

先写一个User类:

package nit.system.check;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

/**
 * @author geekwang
 *
 */
class User{
	private String userName;
	private String address;
	
	public User(){
		
	}
	
	public User(String userName,String address){
		this.userName=userName;
		this.address=address;
	}
	
	public void write(){
		System.out.println("userName:"+userName);
		System.out.println("address:"+address);
	}
}

 

上面是一个很普通的类,有userName和address两个属性,还有打印用户姓名和地址的write方法.

 

接下来就是用反射技术来实现对User的应用.这样的话,我们就可以很轻松的把类,属性以及方法从客户端的代码中抽取出来,可以放在配置文件中读取到客户端进行调用,也就很大程序上减少了耦合,事实上目前的很多框架也是这么做的.

 

public class ReflectTest {
	public static void main(String args[]) throws Exception{
		Class c=Class.forName("nit.system.check.User");
		//由类得到构造函数
		Constructor constructor=c.getConstructor(new Class[]{Class.forName("java.lang.String"),Class.forName("java.lang.String")});
		//由构造函数得到对象
		Object obj=constructor.newInstance(new Object[]{"geekwang","ningbo"});
		//由类得到方法
		Method method=c.getMethod("write", new Class[]{});
		//方法调用对象,反射
		method.invoke(obj, new Object[]{});
		
		//等同于如下代码
		User print=new User("geekwang","ningbo");
		print.write();
	}
}

 

你可能感兴趣的:(java,C++,c,框架,C#)