Java 如何在IntelliJ'中请求外部类;什么是模板语言?

Java 如何在IntelliJ'中请求外部类;什么是模板语言?,java,intellij-idea,texttemplate,Java,Intellij Idea,Texttemplate,在生成toString和hashCode/equals实现时,我发现了如何在IntelliJ中更改默认模板,但我找不到关于哪些变量可以访问的适当文档。自动完成帮助,但它没有显示任何这样的选项 基本上,我想更改toString模板,为下面的内部类生成前缀Foo.Bar class Foo { class Bar { } } 现在,它只需将条放入其中,而不带前缀。我不想添加包名 附加问题:如何设置全局参数?我还试图将equals模板的参数名称从o更改为对象可以在此处找到有关模板中可访问哪些变量

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

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

class Foo {
  class Bar { }
}
现在,它只需将
放入其中,而不带前缀。我不想添加包名


附加问题:如何设置全局参数?我还试图将
equals
模板的参数名称从
o
更改为
对象

可以在此处找到有关模板中可访问哪些变量的文档:

不幸的是,我找不到类似
class.hasOuterClass
class.outerClassName
或类似的变量

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

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

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

奖金问题:

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

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


你好,非常感谢。将o重命名为object的方法确实有效,但我必须将该语句放在parse语句之后。同时,Velocity不接受
toString
方法的字符串操作。相反,它会发出一个错误。
$classname
覆盖对我来说是可行的。错误信息是什么,您使用的是哪个idea版本,您使用的是哪个模板?