package com.levelup.java; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.apache.commons.lang3.builder.ToStringBuilder; import org.junit.Test; import com.google.common.base.Objects; /** * This java example will demonstrate how to override the toString in java with * straight up java, google guava and apache commons. * * @author Justin Musgrove * @see <a href="http://www.leveluplunch.com/java/examples/override-object-tostring/">Override toString</a> */ public class OverrideToString { private static final String CAPITAL = "Madison"; private static final String STATE_CODE = "WI"; class OverrideTooStringWithJava { private String capital = null; private String stateCode = null; @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("state capital "); sb.append(capital); sb.append(" , "); sb.append("state code "); sb.append(stateCode); return sb.toString(); } public void setCapital(String capital) { this.capital = capital; } public void setStateCode(String stateCode) { this.stateCode = stateCode; } } class OverrideToStringWithGuava { private String capital = null; private String stateCode = null; @Override public String toString() { return Objects.toStringHelper(this) .add("state capital", capital) .add("state code", stateCode) .toString(); } public void setCapital(String capital) { this.capital = capital; } public void setStateCode(String stateCode) { this.stateCode = stateCode; } } class OverrideToStringWithApacheCommons { private String capital = null; private String stateCode = null; @Override public String toString() { return new ToStringBuilder(this). append("state capital", capital). append("state code", stateCode). toString(); } public void setCapital(String capital) { this.capital = capital; } public void setStateCode(String stateCode) { this.stateCode = stateCode; } } @Test public void override_toString_With_java () { OverrideTooStringWithJava overrideTooString = new OverrideTooStringWithJava(); overrideTooString.setCapital(CAPITAL); overrideTooString.setStateCode(STATE_CODE); assertEquals("state capital Madison , state code WI", overrideTooString.toString()); } @Test public void override_toString_with_guava () { OverrideToStringWithGuava guavaOverrideToString = new OverrideToStringWithGuava(); guavaOverrideToString.setCapital(CAPITAL); guavaOverrideToString.setStateCode(STATE_CODE); assertEquals("OverrideToStringWithGuava{state capital=Madison, state code=WI}", guavaOverrideToString.toString()); } @Test public void override_toString_with_apachecommons () { OverrideToStringWithApacheCommons apacheCommonsToString = new OverrideToStringWithApacheCommons(); apacheCommonsToString.setCapital(CAPITAL); apacheCommonsToString.setStateCode(STATE_CODE); assertTrue(apacheCommonsToString.toString().contains("[state capital=Madison,state code=WI]")); } }