转载:跳转

简单介绍:

1、项目中一般都需要打印日志,所有实体的toString()方法都是用简单的"+",因为每"+" 一个就会 new 一个 String 对象,这样如果系统内存小的话会暴内存。使用ToStringBuilder就可以避免暴内存这种问题。

ToStringBuilder的reflectionToString方法:

  logger.info("请求数据:"+ToStringBuilder.reflectionToString(req));

2、ToStringBuilder在包 common-lang 中,主要用于一个类的格式化输出。ToStringBuilder类中的append方法可以向该类添加基本类型、数组和对象 ,只有添加的方法才会被toString方法输出。

        ToStringStyle类则是对输出的内容进行格式化。

使用例子:

 package test;

    public class User {

        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;
        }
  }

下面是ToStringBuilder的使用方法

  System.out.println("-------------ToStringBuilder-------------------------");

    User u = new User();

    u.setAge(25);

    u.setName("zhengtian");

    

  //对象及其属性一行显示

    System.out.println(ToStringBuilder.reflectionToString(u));

    System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.DEFAULT_STYLE));

    //属性换行显示

    System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.MULTI_LINE_STYLE));

    //不显示属性名,只显示属性值,在同一行显示

    System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.NO_FIELD_NAMES_STYLE));

    //对象名称简写

    System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.SHORT_PREFIX_STYLE));

    //只显示属性

    System.out.println(ToStringBuilder.reflectionToString(u, ToStringStyle.SIMPLE_STYLE));

结果显示:

-------------ToStringBuilder-------------------------

test.User@141d683[name=zhengtian,age=25]

test.User@141d683[name=zhengtian,age=25]

test.User@141d683[

  name=zhengtian

  age=25

]

test.User@141d683[zhengtian,25]

User[name=zhengtian,age=25]

zhengtian,25

描述:ToStringBuilder比较适合在打日志时,输出参数的信息,特别是在参数为对象时,该工具类能够很方便的自动打印对象中的属性值

  maven包引入:

1 <dependency>
2     <groupId>org.apache.commons</groupId>
3     <artifactId>commons-lang3</artifactId>
4     <version>3.4</version>
5 </dependency>