1、
项目中一般都需要打印日志,所有实体的toString()方法都是用简单的"+",因为每"+" 一个就会 new 一个 String 对象,这样如果系统内存小的话会暴内存。使用ToStringBuilder就可以避免暴内存这种问题。
ToStringBuilder的reflectionToString方法:
logger.info("请求数据:"+ToStringBuilder.reflectionToString(req));
2、
ToStringBuilder在包 common-lang 中,主要用于一个类的格式化输出。ToStringBuilder类中的append方法可以向该类添加基本类型、数组和对象 ,只有添加的方法才会被toString方法输出。
ToStringStyle类则是对输出的内容进行格式化。
demo
import org.apache.commons.lang.builder.ToStringBuilder; public class Person { private String name; private int sex; private String addr; public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } @Override public String toString(){ return ToStringBuilder.reflectionToString(this,ToStringStyle.MULTI_LINE_STYLE); } }
tester
public class PersonTest { /** * @param args */ public static void main(String[] args) { Person person = new Person(); person.setName("watchdb"); person.setSex(1); person.setAddr("shanghai.zhangjiang"); System.out.println(person.toString()); } }
ToStringStyle参数说明:
1. DEFAULT_STYLE
[email protected][name=watchdb,sex=1,addr=shanghai.zhangjiang]
2. MULTI_LINE_STYLE
[email protected][
name=watchdb
sex=1
addr=shanghai.zhangjiang
]
3. NO_FIELD_NAMES_STYLE
[email protected][watchdb,1,shanghai.zhangjiang]
4. SHORT_PREFIX_STYLE
Person[name=watchdb,sex=1,addr=shanghai.zhangjiang]
5. SIMPLE_STYLE
watchdb,1,shanghai.zhangjiang