Intellij toString 多行

问题描述 投票:0回答:2

IntelliJ
中自动生成 toString 方法时,它将所有文本放在一行上。其中一些行很大 - 我怎样才能让 Intellij 在每个新变量之后将 toString 分割成多行?

这就是我所拥有的:

@Override
    public String toString() {
        return "Address{" + " line1='" + line1 + '\'' + ", line2='" + line2 + '\'' + ", town='" + town + '\'' + ", county='" + county + '\'' + ", postcode='" + postcode + '\'' + ", country='" + country + '\'' + '}';
    }

这就是我想要的:

@Override
    public String toString() {
        return "Address{" 
            + " line1='" + line1 + '\'' 
            + ", line2='" + line2 + '\'' 
            + ", town='" + town + '\'' 
            + ", county='" + county + '\'' 
            + ", postcode='" + postcode + '\'' 
            + ", country='" + country + '\'' + '}';
        }

我尝试创建自定义模板,但它似乎忽略了这一点。

java intellij-idea tostring
2个回答
1
投票

IntelliJ 的

String concat (+)
模板生成的输出〜与您的问题中显示的所需输出相同。

要使用此模板...

  • Code > Generate > toString
  • 选择模板:
    String concat (+)

如果您需要调整此模板,请单击

Settings
并选择
Templates
选项卡,复制并创建最接近您需求的现有模板的副本,编辑此副本,然后它将出现在
Template
中下拉选择。

这是截图:

如果 - 使用此模板后 - 输出位于单行中,那么您选择的 Java 代码格式化程序可能正在重新格式化

toString
模板生成的输出。


0
投票

这是一个生成 toString() 方法主体的模板,下一行带有加号

  1. 打开模板设置
    toString() -> Settings -> Templates
  2. 克隆
    String concat(+)
  3. 使用该内容
public java.lang.String toString() {
#if ( $members.size() > 0 )
    #set ( $i = 0 )
return "$classname{"
    #foreach( $member in $members )
        #if ( $i == 0 )
            + "$member.name="##
        #else
            + ", $member.name="##
        #end
        #if ( $member.objectArray )
            + java.util.Arrays.toString($member.accessor)
        #elseif ( $member.primitiveArray && $java_version >= 5)
            + java.util.Arrays.toString($member.accessor)
        #elseif ( $member.string )
            + $member.accessor + '\''
        #else
            + $member.accessor
        #end
        #set ( $i = $i + 1 )
    #end
+ '}';
#else
return "$classname{}";
#end
}
© www.soinside.com 2019 - 2024. All rights reserved.