通过ToStringBuilder实现toString方法
1.什么是ToStringBuilder?
ToStringBuilder 用于構(gòu)建一個(gè)類的toString字符串的工具類,使用該類需要導(dǎo)入commons-lang.jar;或者導(dǎo)入maven倉(cāng)庫(kù):
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version> </dependency>然后導(dǎo)入即可:import org.apache.commons.lang3.builder.ToStringBuilder;
2.為什么要使用ToStringBuilder?
因?yàn)榇蟛糠謱?shí)體的toString()方法都用的是簡(jiǎn)單的"+",而每"+"一個(gè)就會(huì)new一個(gè)String對(duì)象,這樣如果系統(tǒng)內(nèi)存小的話會(huì)暴內(nèi)存。使用ToStringBuilder就可以避免暴內(nèi)存這種問(wèn)題的。
3.主要方法有哪些?
append()方法: 該方法用于自定義添加需要打印哪些變量,只有使用append添加的變量才會(huì)在toString函數(shù)中打印。
// 方法源碼 public ToStringBuilder append(Object obj) {this.style.append(this.buffer, (String)null, obj, (Boolean)null);return this;}public ToStringBuilder append(String fieldName, Object obj) {this.style.append(this.buffer, fieldName, obj, (Boolean)null);return this;}...reflectionToString()方法(靜態(tài)): 該方法使用反射機(jī)制打印一個(gè)類中的所有變量,該函數(shù)還提供一個(gè)變量style,建議使用ToStringStyle.DEFAULT_STYLE。
//方法源碼 public static String reflectionToString(Object object) {return ReflectionToStringBuilder.toString(object);}public static String reflectionToString(Object object, ToStringStyle style) {return ReflectionToStringBuilder.toString(object, style); }...4.具體使用
通過(guò)ToStringBuilder->實(shí)現(xiàn)toString方法:
1.ToStringBuilder比較適合在打日志時(shí),能夠很方便的自動(dòng)打印對(duì)象中的屬性值;
2.利用反射原理拿到對(duì)象中域fields的屬性并添加到新的對(duì)象中builder并最終toString;
(注:idea安裝了lombok插件,只要在類前增加@Getter和@Setter注解即可不用手寫方法!)
也可以這樣使用:
@Override public String toString() {return ToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE); }5.結(jié)果對(duì)比
@Test public void testBaseDTO(){BaseDTO dto = new BaseDTO();dto.setCreateBy("createName");dto.setUpdatedBy("updateName");System.out.println(dto.toString()); } 第一種方法(append): me.zhengjie.base.BaseDTO@2fc14f68[createBy=createName,updatedBy=updateName,createTime=<null>,updateTime=<null>] 第二種方法(reflectionToString): me.zhengjie.base.BaseDTO@445b84c0[createBy=createName,updatedBy=updateName,createTime=<null>,updateTime=<null>]兩種方法結(jié)果差不多,只是append方法更靈活,還可以在每次屬性添加后換行或者自定義字符串;而reflectionToString靜態(tài)方法簡(jiǎn)單直白。
總結(jié)
以上是生活随笔為你收集整理的通过ToStringBuilder实现toString方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 前端学习(2876):原生js模块化+弹
- 下一篇: 音视频即时通讯开发中使用P2P技术的好处