java.lang.reflect

java的反射是很有趣的东西。最近研究了一个这个包。

发现可以利用反射简化许多重复的代码。

例如我有一个简单的bean,结构如下:

class TestBean {

       private String userid;

       private String password;

       private String year;

       public getXXX();

       public setXXX();

       .........

}

通常调用者要具体为这个类填充值的时候往往会不厌其烦,怎么有那么多getXXX()和setXXX()要写,其实如果使用反射,这个问题很好解决。

以通常使用的反射类Method这个类为例子:

首先我定义一个数组,来存放数据库的表的字段名和类型:

 private final static String[][] fieldNames= { 
             {"mq_userid","int"},
             {"mq_username","string"},
             {"mq_inbox_name","string"},
             {"mq_outbox_name","string"},
             {"mq_response_name","string"}
            };

然后在方法里调用:

ResultSet rs ;

  if (rs.next()) {
  
   Method intMethod = ResultSet.class.getMethod("getInt",new Class[]{String.class});
   Method strMethod = ResultSet.class.getMethod("getString",new Class[]{String.class});
   
   //循环用反射方法来取对应字段的值
   for (int i=0;i<fieldNames.length;i++) {
     if (fieldNames[i][1].equals("int")) {
      strValue = (intMethod.invoke(rs,new Object[]{fieldNames[i][0]})).toString();
     }
     if (fieldNames[i][1].equals("string")) {
      strValue = (String)strMethod.invoke(rs,new Object[]{fieldNames[i][0]});
     }    
     
   }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值