使用String.format而不是连接的toString方法的IntelliJ Idea模板

时间:2016-03-11 05:45:01

标签: java intellij-idea

我想使用toString而不是连接String.format等为StringBuffer方法创建IntelliJ Idea模板。

例如,我有以下对象:

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

如果我默认为所有字段生成toString,则会生成:

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

但我想生成以下内容:

@Override
public String toString() {
    return String.format("Foo(id=%d, name=%s, values=%s)", id, name, values);
}

1 个答案:

答案 0 :(得分:13)

对于仍在寻找此事的人:

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
);
}

改编自this template