转载:跳转
简单介绍:
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>