这个事例代码是从ResultSet中读取数据放入对象,用反射来实现 那种比较繁琐的set方法
这个事dao类 里面的注释是没有使用反射的代码public List<UserInfo> findAll()
{
Ref ref = new Ref();
String sql = "select * from userInfo";
List<UserInfo> list = new ArrayList<UserInfo>();
ResultSet rs = common.excuteQuery(sql);
try {
while(rs.next())
{
UserInfo info = new UserInfo();
// info.setUserName(new String(rs.getString("userName").getBytes("iso-8859-1")));
// info.setPassWord(new String(rs.getString("passWord").getBytes("iso-8859-1")));
// System.out.println(new String(rs.getString("userName").getBytes("iso-8859-1")));
info = (UserInfo)ref.setObject(rs, UserInfo.class);
System.out.println(info.getUserName());
list.add(info);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}下面是一段简单的反射代码public Object setObject(ResultSet rs,Class cls)
{
Field[] clsFields = cls.getDeclaredFields();
Object obj = null;
//Method[] resMethods = rs.getClass().getDeclaredMethods();
try {
obj = cls.newInstance();
 
for (Field field : clsFields) {
//得到对象的set方法名称  如:setUserName
String setMethodName = "set"+field.getName().substring(0,1).toUpperCase()+field.getName().substring(1);
Method clsMethod = cls.getMethod(setMethodName, new Class[]{field.getType()});

clsMethod.invoke(obj, new Object[]{rs.getObject(field.getName())});
}
}
catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return obj;
}调用这个反射方法传入 ResultSet对象和你的bean类 就可以完成繁琐的set功能。希望大家教我下比较高级一点的反射,还有struts的其他有些方面用反射如何实现。