Code style determines how the generated method works and what classes it uses. There are several code styles available to chose from the combo box in generator's dialog:
return "FooClass [aFloat=" + aFloat + ", aString=" + aString + ", anInt=" + anInt + ", anObject=" + anObject + "]";With "Skip null values" option turned on, the code becomes a little harder to read:
return "FooClass [aFloat=" + aFloat + ", " + (aString != null ? "aString=" + aString + ", " : "") + "anInt=" + anInt + ", " + (anObject != null ? "anObject=" + anObject : "") + "]";
StringBuilder builder = new StringBuilder(); builder.append("FooClass [aFloat="); builder.append(aFloat); builder.append(", aString="); builder.append(aString); builder.append(", anInt="); builder.append(anInt); builder.append(", anObject="); builder.append(anObject); builder.append("]"); return builder.toString();The "Skip null values" option doesn't obfuscate the code as much as previously:
StringBuilder builder = new StringBuilder(); builder.append("FooClass [aFloat="); builder.append(aFloat); builder.append(", "); if (aString != null) { builder.append("aString="); builder.append(aString); builder.append(", "); } builder.append("anInt="); builder.append(anInt); builder.append(", "); if (anObject != null) { builder.append("anObject="); builder.append(anObject); } builder.append("]"); return builder.toString();
StringBuilder builder = new StringBuilder(); builder.append("FooClass [aFloat=").append(aFloat).append(", aString=").append(aString) .append(", anInt=").append(anInt).append(", anObject=").append(anObject).append("]"); return builder.toString();With "Skip null values" switched on, the chain must be broken:
StringBuilder builder = new StringBuilder(); builder.append("FooClass [aFloat=").append(aFloat).append(", "); if (aString != null) { builder.append("aString=").append(aString).append(", "); } builder.append("anInt=").append(anInt).append(", "); if (anObject != null) { builder.append("anObject=").append(anObject); } builder.append("]"); return builder.toString();
return String.format("FooClass [aFloat=%s, aString=%s, anInt=%s, anObject=%s]", aFloat, aString, anInt, anObject);Because there's no
String.format()
in JDK 1.4 and ealier, MessageFormat.format()
is used instead:
return MessageFormat.format("FooClass [aFloat={1}, aString={2}, anInt={3}, anObject={4}]", new Object[] { Float.valueOf(aFloat), aString, Integer.valueOf(anInt), anObject });