1

我发现了如何在生成toStringhashCode/equals实现时更改 IntelliJ 中的默认模板,但我找不到任何关于可以访问哪些变量的适当文档。自动完成有帮助,但它没有向我显示任何此类选项。

基本上,我想更改toString模板以生成Foo.Bar以下内部类的前缀

class Foo {
  class Bar { }
}

现在它只是在Bar没有前缀的情况下放置。我不想添加包名!

额外问题:如何设置全局参数?我也在尝试将equals模板的参数名称从更改oobject.

4

1 回答 1

1

可以在此处找到有关模板中可以访问哪些变量的文档:设置对话框的文档toString

不幸的是,我找不到任何变量class.hasOuterClass,例如class.outerClassName或类似的东西。

经过一番研究,我发现了一个丑陋的解决方案,但它有效,如果你的类名以大写字母开头并且你的包名都是小写的。

将以下内容放在模板的开头:

#set( $classname = $FQClassname.substring($StringUtil.indexOfAny($FQClassname, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")))

奖金问题:

我没有找到类似的equals/hashCode模板文档,但我查看了equalsHelper.vmGitHub 上的源代码。

如果您在the#set( $baseParamName = "object" )之前放置,则如果没有其他具有该名称的局部变量,则该名称将被命名。如果您有一个具有该名称的成员变量,则会发生这种情况。#parse("equalsHelper.vm")$paramNameobject

在此处输入图像描述

于 2016-03-08T19:52:02.643 回答