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版本,您使用的是哪个模板?