`

BeanDebugger.java 方便的列出 bean 对象的所有属性和值

阅读更多
BeanDebugger.java 方便的列出 bean 对象的所有属性和值package beansoft;import java.beans.PropertyDescriptor;import java.util.Vector;/** * Debugger at runtime, internal used by BeanSoft. */public class BeanDebugger {    /**     * 调试, 打印出给定 Bean 的所有属性的取值.     * @date 2005-07-31     * @author BeanSoft     * @param bean 需要调试的对象     */    public static void dump(Object bean) {        java.beans.PropertyDescriptor[] descriptors =            getAvailablePropertyDescriptors(bean);        for(int i = 0; descriptors != null && i < descriptors.length; i++) {            java.lang.reflect.Method readMethod = descriptors[i].getReadMethod();            try {                Object value = readMethod.invoke(bean, null);                System.out.println("[" + bean.getClass().getName() + "]." +                        descriptors[i].getName() + "(" +                         descriptors[i].getPropertyType().getName() + ") = "                        + value);            } catch (Exception e) {                // TODO auto generated try-catch                e.printStackTrace();            }        }    } /**  * 从 bean 中读取有效的属性描述符.  *  * NOTE: 名称为 class 的 PropertyDescriptor 被排除在外.  *  * @param bean  *            Object - 需要读取的 Bean  * @return PropertyDescriptor[] - 属性列表  */ public static java.beans.PropertyDescriptor[] getAvailablePropertyDescriptors(   Object bean) {  try {   // 从 Bean 中解析属性信息并查找相关的 write 方法   java.beans.BeanInfo info = java.beans.Introspector.getBeanInfo(bean     .getClass());   if (info != null) {    java.beans.PropertyDescriptor pd[] = info      .getPropertyDescriptors();    Vector columns = new Vector();    for (int i = 0; i < pd.length; i++) {     String fieldName = pd[i].getName();     if (fieldName != null && !fieldName.equals("class")) {      columns.add(pd[i]);     }    }    java.beans.PropertyDescriptor[] arrays = new java.beans.PropertyDescriptor[columns      .size()];    for (int j = 0; j < columns.size(); j++) {     arrays[j] = (PropertyDescriptor) columns.get(j);    }    return arrays;   }  } catch (Exception ex) {   System.out.println(ex);   return null;  }  return null; }}

因为开发过程中总是要调用一些 JavaBean 对象, 然后通过数据库操作来给这些对象赋值, 原来调试的时候是通过实现 toString() 方法, 后来发现过于麻烦, 干脆用反射机制直接写了一个工具类来自动打印出来 bean 的所有属性的名称, 类型以及当前的值, 比较方便一些.



用法: BeanDebugger.dump(myBean);



一个输出示例:

[technote.query.bean.Category].cat_desc(java.lang.String) = Cables
[technote.query.bean.Category].cat_id(int) = 19
[technote.query.bean.Category].family_desc(java.lang.String) = Accessories and Cables
[technote.query.bean.Category].family_id(int) = 1
[technote.query.bean.Category].group_id(int) = 100
[technote.query.bean.Category].subcat_desc(java.lang.String) = Accessory
[technote.query.bean.Category].subcat_id(int) = 147
分享到:
评论

相关推荐

    Java Bean 遍历和使用注解给Bean的属性添加属性值

    Java Bean遍历是获取并操作Bean对象属性的过程,而注解是现代Java中用于元数据的一种方式,可以给Bean的属性添加额外的信息或行为。 在给定的标题"Java Bean 遍历和使用注解给Bean的属性添加属性值"中,我们可以...

    json-lib net.sf.ezmorph.bean.MorphDynaBean cannot be cast to xxx

    标题中的“json-lib net.sf.ezmorph.bean.MorphDynaBean cannot be cast to xxx”是一个典型的Java运行时异常,通常发生在尝试将一个对象强制转换为其不兼容类型的实例时。在这个特定的情况下,`MorphDynaBean`是...

    Java Bean对象和Map相互转换.zip

    这主要涉及到对象属性与键值对之间的映射,方便数据的存储、传递和处理。在这个主题中,我们将深入探讨如何使用Fastjson和BeanMap两个库来实现这种转换。 首先,Fastjson是阿里巴巴开源的一个高性能的JSON库,它...

    拷贝JSON对象值进Java Bean对象

    这段代码利用了反射机制,找到Java Bean类中的setter方法,根据JSON中的键值对调用setter方法设置属性值。 另一种常见的方式是使用Gson库,它的使用更加简洁。首先,引入Gson库,然后使用`Gson.fromJson()`方法进行...

    关于java中对象属性值的校验的思考

    这篇文章将探讨如何在Java中进行对象属性值的校验,以及相关的工具和源码分析。 首先,对象属性值的校验通常在对象创建(构造函数)或属性赋值时进行。这是为了确保对象的状态始终符合预设的业务规则。例如,一个...

    xml和java bean互相转换工具包(简单易用)

    3、根据bean对象以及bean的所有属性值生成xml文件。 String bean2xml = XbeanUtil.bean2xml(bean, null); 使用前请将附件jar包放入classpath。 如有任何疑问,请联系coynnbai@163.com。源代码包及详细使用文档...

    JAVA Bean 课程.rar_Java bean

    - **属性**:Bean通常包含一组可访问的属性,这些属性通过getter和setter方法进行操作,符合JavaBeans规范的属性通常有对应的`getXXX`和`setXXX`方法。 - **序列化**:为了支持持久化,Java Bean应该实现`...

    java反射以及复制一个bean的值到另一个bean中。

    在Java编程中,反射(Reflection)是一个强大的工具,它允许...同时,复制bean的值也是常见的需求,尤其在数据处理和对象模型转换时。不过,需要注意的是,反射可能会带来性能开销和安全风险,因此在使用时应谨慎考虑。

    Java工具库BeanQuery.zip

    Bean Query 复用Apache Commons BeanUtils, Apache Commons Collections和Java Hamcrest 来简化对Bean(集合)的排序,过滤和转换。 文档 阅读 使用说明来学习怎么使用 BeanQueryExample.java用Junit...

    java解析Properties配置文件为对象Bean

    利用java的反射解析Properties文件转成对象 /** * 解析properties文件为对象 * @param * @param propPath * @param cls * @return * @throws InstantiationException * @throws ...

    java Map转换成bean,利用java反射以及java和bean包

    `mapToBean`方法接受一个Map和目标Bean的Class对象,首先检查参数是否有效,然后创建一个新的Bean实例,遍历Map中的每一个键值对,通过反射找到Bean中对应的Field,设置其可访问,最后调用`set()`方法设置属性值。...

    Java bean转换为Json Schema

    Java Bean是Java编程中的一个概念,它是一类具有特定规则的POJO(Plain Old Java Object),通常包含私有属性、公有的getter和setter方法以及无参构造函数。而Json Schema则是一种JSON格式的规范,用于定义JSON数据...

    spring bean XML配置入门

    该文件包含了一系列的&lt;bean&gt;元素,每个元素表示一个Java对象的定义,包括类名、属性值、初始化方法等。 4. **Bean的定义**: 在XML配置文件中,我们使用`&lt;bean&gt;`标签来定义一个Bean。例如: ```xml &lt;bean id=...

    通过Java反射机制获取JavaBean对象

    1.通过Java反射机制获取JavaBean对象。 2.通过JavaBean全路径字符串获取JavaBean对象。 3.获取JavaBean注解信息

    java bean 转为JSON

    一个Java Bean通常包含私有属性、对应的getter和setter方法,以及可能的构造函数。例如,`PO.java`和`BO.java`可能定义了如下所示的Java Bean: ```java public class PO { private String field1; private int ...

    使用dom4j将xml字符串转换成Bean对象

    接着,我们遍历根元素的所有子元素,将每个元素的名称作为Bean的属性名,元素的文本作为属性值,并根据属性类型进行相应的类型转换。 值得注意的是,这个示例仅处理了String和Integer类型的属性,对于其他类型,你...

    Java中Spring获取bean方法小结

    Spring的核心在于其BeanFactory和ApplicationContext,它们使得对象的管理和装配变得简单。这里我们将详细探讨如何在Java中通过Spring获取配置的bean。 1. **BeanFactory与ApplicationContext** - **BeanFactory*...

    java自动生成bean 根据数据库表及字段

    在Java开发中,为了提高开发效率和代码的可维护性,常常需要将数据库表结构映射为Java对象,也就是我们常说的Bean类。这个过程通常手动编写,但随着自动化工具的发展,现在可以通过特定的工具或者库来自动生成这些...

    2022年EJB 3.0 开发指南之依赖值对象Java教程.docx

    - `Name.java`:这是依赖值对象,可能包含多个属性,例如`first`和`last`,它们分别映射到数据库的不同列。 - `StudentDAO.java`和`StudentDAOBean.java`:分别为会话Bean的业务接口和实现,用于操作实体Bean。 -...

    为了高效地将Json对象转化成Java bean对象,传统上我们是在运行是利用反射来实现.zip

    4. **设置Bean属性**:遍历JSON对象的所有键值对,利用反射的`set()`方法,找到对应的setter方法并设置值。这需要确保JSON键与Java Bean的属性名匹配,或者使用注解来指定映射关系。 5. **处理嵌套结构**:如果JSON...

Global site tag (gtag.js) - Google Analytics