自己试过可以,不知道有什么缺点。
工作需要,在事先不知道一个javaBean类的名字要动态调用这个类的set方法,给这个类的实例的属性设置值。
import java.lang.reflect.Field;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.lhx.test.model.User;
public class TestClass {
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException {
// TODO Auto-generated method stub
UserDAO dao = new UserDAO();
java.sql.ResultSet _rs = dao.getUsers(); //以上两步在数据库中去值
Class oc = Class.forName("com.lhx.test.model.User"); //根据字符串得到这个类
Field f[] = oc.getDeclaredFields(); //得到这个类的所有字段 不包括父类的字段
List list = new ArrayList();
while(_rs.next()){
Object o = oc.newInstance(); //得到这个类的一个实例
for(int i=0;i<f.length;i++){
String colmt = f[i].toString();
System.out.println("colmt =" + colmt);
int lastindex = colmt.lastIndexOf(".");
String colm = colmt.substring(lastindex+1);
f[i].set(o,(_rs.getObject(colm))); //重点 通过调用字段的set方法,给实例中的属性赋值
}
list.add(o);
}
for(int k=0;k<list.size();k++){
System.out.println(((User)list.get(k)).getUsername());
}
}
}
分享到:
相关推荐
`dynamicGetMethod`方法则根据给定的方法名动态调用bean的`get`方法。 这个`DYNC_Object`类可以作为其他更复杂动态装配场景的基础。例如,当处理来自数据库或JSON输入的数据时,我们可以使用这种方法动态地填充...
在Java编程语言中,get和set方法是面向对象设计中的基本元素,它们构成了Java Bean规范的一部分。这些方法用于访问和修改对象的私有属性,确保数据的安全性和封装性。"get set方法生成工具"是为了帮助开发者提高代码...
4. 生成的代码:在“实体”目录下,你会找到生成的Java Bean类,它们包含了与数据库表字段对应的属性及get/set方法。在“DAO生成工具”目录下,会有相应的DAO接口和实现类,包含了对数据库的基本操作方法。 5. 集成...
例如,对于嵌套的Java Bean,可以在`beanToMap`方法中递归调用自身;对于自定义类型转换,可以在调用setter方法前进行适当的类型转换。 总的来说,Java Bean和Map之间的互转在Java开发中非常常见,尤其是在数据交换...
这段代码利用了反射机制,找到Java Bean类中的setter方法,根据JSON中的键值对调用setter方法设置属性值。 另一种常见的方式是使用Gson库,它的使用更加简洁。首先,引入Gson库,然后使用`Gson.fromJson()`方法进行...
首先,Java反射是Java语言的一个重要特性,它允许程序在运行时检查类、接口、字段和方法的信息,甚至可以动态地调用方法和修改字段值。在Map到Bean的转换中,反射用于动态地创建Bean实例并设置其属性值。这需要使用`...
通过反射,我们可以动态地创建对象、访问私有成员、调用私有方法,甚至改变对象的行为。Java反射 API 主要包含在 `java.lang.reflect` 包中,包括 `Class` 类、`Constructor` 类、`Method` 类和 `Field` 类等。 ...
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> PageBean pageBean = (PageBean) request.getAttribute("pageBean"); if (pageBean == null) { pageBean = new PageBean(); } pageBean....
3. **设置Bean的属性值**:对于Map到Bean的转换,遍历Map,使用反射调用Bean的setter方法来设置每个属性的值。首先,使用`Method`对象的`setAccessible(true)`使私有方法可访问,然后调用`invoke()`方法执行setter。...
1. **定义JavaBean**: 首先定义了一个名为`TestStyle`的JavaBean,它包含了字体名称(fontName)、字体大小(fontSize)、是否加粗(bold)以及是否斜体(italic)等属性,并提供了相应的set/get方法。 ```java public ...
BeanMapper 一个BeanUtils.copyProperties的小型快速替代。 起因 由于BeanUtils(Spring或Apache Commons)的copyProperties实现是利用反射实现的,它在大量调用时具有比较严重的性能问题。 BeanMapper通过javassist...
动态Bean是Java中的一种机制,允许程序在运行时创建和操作具有可变属性的对象,而无需预先定义具体的类。这种灵活性使得动态Bean在处理数据模型不确定或者需要动态适应变化的场景中非常有用。Apache Commons ...
`User`类只是一个简单的Java Bean,包含姓名和电子邮件属性: ```java public class User { private String name; private String email; public User(String name, String email) { this.name = name; this....
这里,EL表达式`${user.name}`和`${user.age}`会自动查找请求或session范围内的`user` Bean,并调用对应的getter方法获取属性值。 结合JSP、Servlet和Bean,可以实现MVC(Model-View-Controller)架构,提高代码的...
通过上述步骤,开发者可以在不修改目标对象原有代码的情况下,通过动态代理为Java Bean的特定方法调用添加额外的行为。这种方式不仅使得代码更加简洁,而且提高了代码的可维护性和可扩展性。另外,这种方法也类似于...
本教程将讲解如何使用Spring Boot集成Apache CXF(一个强大的Java Web Service框架)来构建服务端,并探讨两种Java客户端调用Web Service接口的方法。 首先,我们需要理解Spring Boot与CXF的整合。Spring Boot通过...
- **set和get方法**:通过JSP表达式或脚本元素调用JavaBean的setter和getter方法,进行数据的读写。 - **动作指令**:如`jsp:setProperty`和`jsp:getProperty`,用于设置和获取JavaBean的属性值。 **4. 数据库连接...
在这个例子中,`Php_bean`拥有属性如`hit`(命中次数)、`array`(缓存)和`itratorCount`(迭代次数),以及对应的方法如`add_hit()`、`get_hit()`、`add_itratorCount()`、`get_itratorCount()`、`set_cache()`和`...
值得注意的是,`regionId`属性除了有`set`和`get`方法外,还存在一个`regionIdSpecified`布尔属性,其作用在于指示在SOAP消息中是否应该包含`regionId`字段。这是因为某些WebServices在处理请求时,会根据字段是否被...
5. **字段值操作**:`Field`对象提供了`get(Object obj)`和`set(Object obj, Object value)`方法,用于读取和设置指定对象的字段值。确保传入的对象与字段所属的类匹配,否则将抛出异常。 6. **继承关系处理**:...