如何使用反射或任何其他实用程序完全打印Java Bean

sri*_*har 10 java reflection javabeans java-ee

我有一个Person包含3个变量的Java bean类:

  • 名称(字符串)
  • 年龄(String)
  • 地址(对象).

Address 包含3个变量:

  • door_no

我想有一个应该打印所有变量的实用程序Person.

我的意思是它应该打印Person以及Address它中包含的对象.

我可以在JSP中使用反射和打印键/值UI创建一个hashmap并放置变量名称和值,但问题是我必须应用反射Address来在hashmap中添加变量/值.

有没有可用的实用程序?

Fra*_*eth 33

你可以使用ToStringBuilderApache的百科全书.

来自文档:

此方法的典型调用如下所示:

 public String toString() {
   return ToStringBuilder.reflectionToString(this);
 }
Run Code Online (Sandbox Code Playgroud)

更多细节:

此类可以为任何类或对象构建良好且一致的toString().本课程旨在通过以下方式简化流程:

允许处理所有类型的字段名一致地处理空值,一致地输出数组和多维数组,使得对象和集合处理类层次结构能够控制细节级别要使用此类,请按如下方式编写代码:

 public class Person {
   String name;
   int age;
   boolean smoker;

   ...

   public String toString() {
     return new ToStringBuilder(this).
       append("name", name).
       append("age", age).
       append("smoker", smoker).
       toString();
   }
 }
Run Code Online (Sandbox Code Playgroud)

或者,有一种方法使用反射来确定要测试的字段.由于这些字段通常是私有的,因此方法reflectionToString使用AccessibleObject.setAccessible来更改字段的可见性.除非正确设置了适当的权限,否则这将在安全管理器下失败.它也比明确测试慢.此方法的典型调用如下所示:

 public String toString() {
   return ToStringBuilder.reflectionToString(this);
 }
Run Code Online (Sandbox Code Playgroud)