轉載:跳轉java
一、項目中通常都須要打印日誌,全部實體的toString()方法都是用簡單的"+",由於每"+" 一個就會 new 一個 String 對象,這樣若是系統內存小的話會暴內存。使用ToStringBuilder就能夠避免暴內存這種問題。
apache
ToStringBuilder的reflectionToString方法:數組
logger.info("請求數據:"+ToStringBuilder.reflectionToString(req));app
二、ToStringBuilder在包 common-lang 中,主要用於一個類的格式化輸出。ToStringBuilder類中的append方法能夠向該類添加基本類型、數組和對象 ,只有添加的方法纔會被toString方法輸出。maven
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比較適合在打日誌時,輸出參數的信息,特別是在參數爲對象時,該工具類可以很方便的自動打印對象中的屬性值
1 <dependency> 2 <groupId>org.apache.commons</groupId> 3 <artifactId>commons-lang3</artifactId> 4 <version>3.4</version> 5 </dependency>