IntelliJ idea template for toString method using String.format instead of concatenation

I want to create an IntelliJ Idea template for the toString method using String.format instead of concatenation, StringBuffer , etc.

For example, I have the following object:

 public class Foo { private int id; private String name; private List<String> values; } 

If I create a toString for all fields by default, Idea will generate:

 @Override public String toString() { return "Foo{" + "id=" + id + ", name='" + name + '\'' + ", values=" + values + '}'; } 

But I want to generate the following:

 @Override public String toString() { return String.format("Foo(id=%d, name=%s, values=%s)", id, name, values); } 
+6
source share
1 answer

For those still looking for this:

 public java.lang.String toString() { return String.format( "$classname (## #set ($i = 0) #foreach ($member in $members) #if ($i != 0)## , ## #end $member.name=%s## #set ($i = $i + 1) #end )",## #set ($i = 0) #foreach ($member in $members) #if ($i != 0) ,## #end #if ($member.primitiveArray || $member.objectArray) java.util.Arrays.toString(this.$member.name)## #else this.$member.name ## #end #set ($i = $i + 1) #end ); } 

Adapted from this template .

+8
source

All Articles