`
jltest
  • 浏览: 7178 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Java 小例子:根据 Map 对象的内容创建 JavaBean

阅读更多
转自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相互转换实例

    总结起来,`Map`和`JavaBean`的相互转换在Java开发中是常见需求,通过反射机制可以高效地实现这一功能。在处理大量数据转换时,自定义的转换工具类如`collectionUtils`能够极大提升开发效率,使代码更加简洁和易懂。...

    json转Map,转javaBean,javBean和Map转json

    Map和JavaBean是Java中的两种数据结构,它们与JSON有着紧密的关联,因为它们都能用来存储和表示数据。本篇将详细介绍如何在Java中进行JSON到Map、JavaBean以及反之的转换,并探讨相关工具的使用。 1. JSON到Map的...

    javabean_map_string和json互转详细文档+例子

    然后创建一个简单的JavaBean: ```java public class User { private String name; private int age; // getters and setters public String getName() { return name; } public void setName(String ...

    Desktop_javaBean转换Map工具_

    在这个例子中,`beanToMap`方法接收一个JavaBean对象,然后遍历它的所有getter方法,将属性名(去掉"get"前缀并首字母小写)和对应的属性值放入Map中。 在压缩包中的文件“javaBean转换Map.txt”和“javaBean转换...

    Java基础的例子 练习题(著名的于慧峰老师的总结)

    10. **反射**:Java反射机制允许在运行时检查类、接口、字段和方法的信息,并动态调用方法、创建对象。这对于框架开发、元编程和插件系统非常有用。 以上就是"Java基础的例子 练习题"中涵盖的主要知识点。通过学习...

    java 学习 资料 demo 500例子

    4. **JAVABEAN**: JavaBean是一种符合特定规范的Java类,常用于创建可重用的组件。它们具有属性、方法和事件,通常在GUI(图形用户界面)应用中使用。JavaBean使得开发者可以通过简单的拖放方式集成组件,提高了开发...

    Dozer一个JavaBean至JavaBean映射器

    **Dozer:JavaBean到JavaBean的映射神器** Dozer是Java开发中的一款强大工具,主要用于Java Bean之间的数据映射。它简化了在不同对象模型之间传递数据的过程,尤其在处理复杂对象结构时,其功能显得尤为重要。Dozer...

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    BeanUtil工具类的常用方法一般包括`populate()`或`fillProperties()`等,这些方法接受一个JavaBean实例和一个Map对象作为参数。Map对象中包含了请求参数,键为参数名,值为参数值。工具类通过反射遍历JavaBean的所有...

    使用GSON库将Java中的map键值对应结构对象转换为JSON

    在这个例子中,我们创建了一个`Map, Point&gt;`,然后将其转换为JSON字符串,再反序列化回Map对象。 总结来说,GSON库提供了一种简洁、强大的方式来处理Java对象与JSON之间的转换。对于包含复杂键类型的Map,如Map...

    Java反射中java.beans包学习总结.docx

    在示例中,为了将Map转换为TestDO对象,可能需要创建一个`PropertyDescriptor`来处理`nodeDO`属性,并利用`PropertyEditor`进行转换。 4. **Introspector**: `Introspector`类是java.beans包的关键部分,它负责从...

    Java连接数据库 JDBC封装类 带使用例子

    Java JDBC封装类,带增删改查例子,支持oracle,MySql,hsqldb 等,支持事务,返回数据格式 支持二维数组,MAP格式,以及javabean对象。有利于初学者DbDemo.java为demo,Connect为jdbc封装类,可以作为项目共通类使用。

    简单的java算法以及 常用的数据体

    根据提供的标题、描述、标签及部分内容,我们可以提炼出与Java编程相关的知识点,特别是与数据库操作相关的部分。下面将详细介绍这些知识点: ### 1. Java算法基础 #### 算法概念 - **定义**:算法是指解决问题的...

    freeMarker例子

    Servlet通过HttpServletResponse的`setContentType`和`getWriter`方法设置响应类型和获取输出流,然后使用`FreeMarkerConfig`创建`Template`对象,最后将Java Bean传入`ModelAndView`或直接用`Map`封装数据。...

    xml 与JAVAbean转换

    **工具** 如Apache Commons BeanUtils库也可以用来在JavaBean和Map对象之间进行转换,虽然它不直接处理XML,但可以作为进一步转换的基础。此外,一些IDE如Eclipse和IntelliJ IDEA提供了内置的功能来自动生成JavaBean...

    JAVA动态对象装配实现 测试--初步实现bean的set/get功能

    在Java编程中,动态对象装配是一项关键技能,它允许我们在运行时动态地创建、配置和组装对象。在本文中,我们将深入探讨如何实现基于Java的动态对象装配,并着重于初步实现bean的`set`和`get`功能。这篇文章可能是...

    struts2(checkbox_radio_select)表单标签的应用及详细事例

    - **Map对象**:也可以使用Map来创建下拉框,其中键作为值,值作为显示文本。 ```jsp &lt;!-- code for s:select using map --&gt; ``` - **JavaBean列表**:最后,使用JavaBean列表创建下拉框,指定`listKey`和`...

    java反射实现Object转json

    在这个例子中,我们首先获取了对象的Class对象,然后遍历其所有声明的字段。`setAccessible(true)`用于绕过访问控制检查,因为我们可能需要访问私有字段。最后,我们使用Gson库将Map转换为JSON字符串。 需要注意的...

    Json-RPC for java中文手册

    该框架支持通过异步调用传递复合对象作为参数,这意味着用户不仅限于传递简单的数据类型,还可以传递如JavaBean或Map这样的复杂对象。 #### 工程下载地址 - **SVN仓库地址**:`...

    Java软件开发实战 Java基础与案例开发详解 15-4 练习题 共5页.pdf

    - JavaBean是一种遵循特定编码约定的Java类,通常用于封装数据。 - **类与对象**: - 类是对一组具有相同属性和行为的对象的抽象描述。 - 对象是类的一个实例。 - 类中的属性对应对象的状态,方法对应对象的...

Global site tag (gtag.js) - Google Analytics