Chinaunix首页 | 论坛 | 博客
  • 博客访问: 601461
  • 博文数量: 96
  • 博客积分: 1464
  • 博客等级: 上尉
  • 技术积分: 1539
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-12 23:24
文章分类

全部博文(96)

文章存档

2013年(29)

2012年(53)

2011年(14)

分类: Java

2012-03-05 21:44:28

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

先写一个User类:

Java代码  收藏代码
  1. package nit.system.check;  
  2.   
  3. import java.lang.reflect.Constructor;  
  4. import java.lang.reflect.Method;  
  5.   
  6. /** 
  7.  * @author geekwang 
  8.  * 
  9.  */  
  10. class User{  
  11.     private String userName;  
  12.     private String address;  
  13.       
  14.     public User(){  
  15.           
  16.     }  
  17.       
  18.     public User(String userName,String address){  
  19.         this.userName=userName;  
  20.         this.address=address;  
  21.     }  
  22.       
  23.     public void write(){  
  24.         System.out.println("userName:"+userName);  
  25.         System.out.println("address:"+address);  
  26.     }  
  27. }  

 

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

 

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

 

Java代码  收藏代码
  1. public class ReflectTest {  
  2.     public static void main(String args[]) throws Exception{  
  3.         Class c=Class.forName("nit.system.check.User");  
  4.         //由类得到构造函数  
  5.         Constructor constructor=c.getConstructor(new Class[]{Class.forName("java.lang.String"),Class.forName("java.lang.String")});  
  6.         //由构造函数得到对象  
  7.         Object obj=constructor.newInstance(new Object[]{"geekwang","ningbo"});  
  8.         //由类得到方法  
  9.         Method method=c.getMethod("write"new Class[]{});  
  10.         //方法调用对象,反射  
  11.         method.invoke(obj, new Object[]{});  
  12.           
  13.         //等同于如下代码  
  14.         User print=new User("geekwang","ningbo");  
  15.         print.write();  
  16.     }  
  17. }  

 

文章转载于:http://geekwang.iteye.com/blog/216705

阅读(711) | 评论(0) | 转发(0) |
0

上一篇:Route命令

下一篇:java反射技术代码

给主人留下些什么吧!~~