转自csdn YidingHe's Blog
Java 提供 java.beans.Introspector 类,帮助我们分析 JavaBean 类当中有哪些属性,通过它可以方便的对 JavaBean 对象属性进行取值和赋值操作。下面是一个例子,根据 Map 对象中的内容创建 JavaBean 对象。
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.HashMap;
import java.util.Map;
import java.lang.reflect.InvocationTargetException;
public class MapToBean {
public static void main(String[] args) throws Exception {
Map<Object, Object> map = new HashMap<Object, Object>();
map.put("name", "张三");
map.put("age", 30);
Person p = convertMap(Person.class, map);
System.out.println(p.getName() + ", " + p.getAge());
}
/**
* 将一个 Map 对象转化为一个 JavaBean
*
* @param type 要转化的类型
* @param map 包含属性值的 map
*
* @return 转化出来的 JavaBean 对象
*
* @throws IntrospectionException 如果分析类属性失败
* @throws IllegalAccessException 如果实例化 JavaBean 失败
* @throws InstantiationException 如果实例化 JavaBean 失败
* @throws InvocationTargetException 如果调用属性的 setter 方法失败
*/
private static <T> T convertMap(Class<T> type, Map<Object, Object> map)
throws IntrospectionException, IllegalAccessException,
InstantiationException, InvocationTargetException {
BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性
T t = type.newInstance(); // 创建 JavaBean 对象
// 给 JavaBean 对象的属性赋值
for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) {
String propertyName = descriptor.getName();
if (map.containsKey(propertyName)) {
// 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。
descriptor.getWriteMethod().invoke(t, map.get(propertyName));
}
}
return t;
}
}
class Person {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
分享到:
相关推荐
总结起来,`Map`和`JavaBean`的相互转换在Java开发中是常见需求,通过反射机制可以高效地实现这一功能。在处理大量数据转换时,自定义的转换工具类如`collectionUtils`能够极大提升开发效率,使代码更加简洁和易懂。...
Map和JavaBean是Java中的两种数据结构,它们与JSON有着紧密的关联,因为它们都能用来存储和表示数据。本篇将详细介绍如何在Java中进行JSON到Map、JavaBean以及反之的转换,并探讨相关工具的使用。 1. JSON到Map的...
然后创建一个简单的JavaBean: ```java public class User { private String name; private int age; // getters and setters public String getName() { return name; } public void setName(String ...
在这个例子中,`beanToMap`方法接收一个JavaBean对象,然后遍历它的所有getter方法,将属性名(去掉"get"前缀并首字母小写)和对应的属性值放入Map中。 在压缩包中的文件“javaBean转换Map.txt”和“javaBean转换...
10. **反射**:Java反射机制允许在运行时检查类、接口、字段和方法的信息,并动态调用方法、创建对象。这对于框架开发、元编程和插件系统非常有用。 以上就是"Java基础的例子 练习题"中涵盖的主要知识点。通过学习...
4. **JAVABEAN**: JavaBean是一种符合特定规范的Java类,常用于创建可重用的组件。它们具有属性、方法和事件,通常在GUI(图形用户界面)应用中使用。JavaBean使得开发者可以通过简单的拖放方式集成组件,提高了开发...
**Dozer:JavaBean到JavaBean的映射神器** Dozer是Java开发中的一款强大工具,主要用于Java Bean之间的数据映射。它简化了在不同对象模型之间传递数据的过程,尤其在处理复杂对象结构时,其功能显得尤为重要。Dozer...
BeanUtil工具类的常用方法一般包括`populate()`或`fillProperties()`等,这些方法接受一个JavaBean实例和一个Map对象作为参数。Map对象中包含了请求参数,键为参数名,值为参数值。工具类通过反射遍历JavaBean的所有...
在这个例子中,我们创建了一个`Map, Point>`,然后将其转换为JSON字符串,再反序列化回Map对象。 总结来说,GSON库提供了一种简洁、强大的方式来处理Java对象与JSON之间的转换。对于包含复杂键类型的Map,如Map...
在示例中,为了将Map转换为TestDO对象,可能需要创建一个`PropertyDescriptor`来处理`nodeDO`属性,并利用`PropertyEditor`进行转换。 4. **Introspector**: `Introspector`类是java.beans包的关键部分,它负责从...
Java JDBC封装类,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类使用。
根据提供的标题、描述、标签及部分内容,我们可以提炼出与Java编程相关的知识点,特别是与数据库操作相关的部分。下面将详细介绍这些知识点: ### 1. Java算法基础 #### 算法概念 - **定义**:算法是指解决问题的...
Servlet通过HttpServletResponse的`setContentType`和`getWriter`方法设置响应类型和获取输出流,然后使用`FreeMarkerConfig`创建`Template`对象,最后将Java Bean传入`ModelAndView`或直接用`Map`封装数据。...
**工具** 如Apache Commons BeanUtils库也可以用来在JavaBean和Map对象之间进行转换,虽然它不直接处理XML,但可以作为进一步转换的基础。此外,一些IDE如Eclipse和IntelliJ IDEA提供了内置的功能来自动生成JavaBean...
在Java编程中,动态对象装配是一项关键技能,它允许我们在运行时动态地创建、配置和组装对象。在本文中,我们将深入探讨如何实现基于Java的动态对象装配,并着重于初步实现bean的`set`和`get`功能。这篇文章可能是...
- **Map对象**:也可以使用Map来创建下拉框,其中键作为值,值作为显示文本。 ```jsp <!-- code for s:select using map --> ``` - **JavaBean列表**:最后,使用JavaBean列表创建下拉框,指定`listKey`和`...
在这个例子中,我们首先获取了对象的Class对象,然后遍历其所有声明的字段。`setAccessible(true)`用于绕过访问控制检查,因为我们可能需要访问私有字段。最后,我们使用Gson库将Map转换为JSON字符串。 需要注意的...
该框架支持通过异步调用传递复合对象作为参数,这意味着用户不仅限于传递简单的数据类型,还可以传递如JavaBean或Map这样的复杂对象。 #### 工程下载地址 - **SVN仓库地址**:`...
- JavaBean是一种遵循特定编码约定的Java类,通常用于封装数据。 - **类与对象**: - 类是对一组具有相同属性和行为的对象的抽象描述。 - 对象是类的一个实例。 - 类中的属性对应对象的状态,方法对应对象的...