服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

如何遍历并执行一个对象的所有可用方法


  在struts应用中,对于从数据库中提取记录并显示出来,我们可以在javabean中完成,
但是对于数据库表格中的每一条记录,我们可能都要写出如下代码,才能将一条记录
中的各个属性值写入一个form对象中,例如对下面一个类test.user

代码如下:

package test;
import java.io.serializable;
public final class user implements serializable {
private string name = null;
private string ps = null;
public string getname () {
   return (this.name);
}
public void setname(string name) {
this.name = name;
system.out.println(name);
}

public string getps () {

   return (this. ps);

}

public void setps (string ps) {

   this. ps = ps;
system.out.println(ps);
}

  }

我们可能要写出如下代码

//数据库连接部分
resultset rs = conn.executequery("select * from user");

while(rs.next()) {
test.user user = new test.user();
user.setname = rs.getstring("name");
user.setps = rs.getstring("ps");
//将user对象加入到一个arraylist对象中
}


这里表格user只有两个属性,name和ps,但是当属性很多时,这样写就很麻烦了,
并且对每一个表格来说,这一段代码都要重新写,所以我们就想到,能不能通过
遍历一个类方法,并且执行该类的一个对象的所有方法,让程序自动去完成这部
分工作呢?

    当然可以,这个问题的重点和难点就在于如何去遍历
    
    首先,我们必须得到一个类的用户定义的方法,
    
    方法如下: 我们可以先创建一个类对象(不同于类的对象)
    
    class newclass = class.forname(classname);
    
    通过该类对象的getdeclaredmethods()方法得到它的方法,如下
    
    method[] methods = newclass.getdeclaredmethods();
    
    而执行可以通过方法对象的invoke()来执行,
    
    多的话就不说了,下面就是一段代码:
    
for (int i=0;i<methods.length;i++) {

m = methods[i];

methodname = m.getname();

if(methodname.startswith("set")) {

propertyname = methodname.substring(3,4).tolowercase()+methodname.substring(4,methodname.length());

recordvalue=rs.getstring(propertyname);

if(recordvalue==null) recordvalue="";

m = newclass.getmethod(methods[i].getname(),new class[]{recordvalue.getclass()});

m.invoke(o,new object[]{recordvalue});

}

}         

这是俺的第一篇文章,如有疑问,可以和我联系 webmaster@jspcn.net

呵呵

扫描关注微信公众号