如何在 IntelliJ IDEA 中配置生成构建器方法的实时模板?
How can I configure a live template that generates a builder method in IntelliJ IDEA?
我经常需要在我的代码中创建构建器方法。这些方法类似于 getter,但它们 return this
并且它们使用 with
而不是 get
.
为了更快地完成该任务,我想在 IDEA 中创建一个实时模板。
这是我得到的结果:
(在 ~/.IntelliJIdea14/config/templates/user.xml
中看起来像这样:)
<template name="builderMethod" value="public $CLASS_NAME$ with$VAR_GET$(final $TYPE$ $PARAM_NAME$) { this.$VAR$ = $PARAM_NAME$; return this; }" description="create a builder method" toReformat="true" toShortenFQNames="true">
<variable name="CLASS_NAME" expression="className()" defaultValue="" alwaysStopAt="true" />
<variable name="VAR" expression="complete()" defaultValue="" alwaysStopAt="true" />
<variable name="PARAM_NAME" expression="VAR" defaultValue="" alwaysStopAt="true" />
<variable name="TYPE" expression="typeOfVariable("this." + VAR)" defaultValue="" alwaysStopAt="true" />
<variable name="VAR_GET" expression="capitalize(VAR)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="JAVA_EXPRESSION" value="false" />
<option name="JAVA_DECLARATION" value="true" />
</context>
</template>
这几乎可以工作,除了 typeOfVariable("this." + VAR)
没有。我只是猜测如何调用此方法,因为我找不到任何关于表达式中使用的语法的文档,除了 this page,它甚至没有提到脚本语言名称或使谷歌搜索更容易的东西。
如何修复对 typeOfVariable
的调用?
额外问题:如何让 complete()
for VAR
只显示字段?
类似的问题,但没有开始:Live Template for Fluent-API Builder in IntelliJ
将 typeOfVariable("this." + VAR)
替换为 typeOfVariable(VAR)
。
编辑:
另一种生成生成器方法的方法是使用适当的 setter 模板(而不是实时模板)。
https://www.jetbrains.com/help/idea/2016.1/generate-setter-dialog.html
已经有一个名为 "Builder" 的内置 setter 模板,它生成 setter,例如:
public Foo setBar(int bar) {
this.bar = bar;
return this;
}
您可以创建自己的模板(例如通过复制它)并更改它,使方法前缀为 with
。
并使生成的方法参数最终转到设置:
Editor | Code Style | Java
- Select 代码生成选项卡
- 勾选使生成的参数最终化
我经常需要在我的代码中创建构建器方法。这些方法类似于 getter,但它们 return this
并且它们使用 with
而不是 get
.
为了更快地完成该任务,我想在 IDEA 中创建一个实时模板。
这是我得到的结果:
(在 ~/.IntelliJIdea14/config/templates/user.xml
中看起来像这样:)
<template name="builderMethod" value="public $CLASS_NAME$ with$VAR_GET$(final $TYPE$ $PARAM_NAME$) { this.$VAR$ = $PARAM_NAME$; return this; }" description="create a builder method" toReformat="true" toShortenFQNames="true">
<variable name="CLASS_NAME" expression="className()" defaultValue="" alwaysStopAt="true" />
<variable name="VAR" expression="complete()" defaultValue="" alwaysStopAt="true" />
<variable name="PARAM_NAME" expression="VAR" defaultValue="" alwaysStopAt="true" />
<variable name="TYPE" expression="typeOfVariable("this." + VAR)" defaultValue="" alwaysStopAt="true" />
<variable name="VAR_GET" expression="capitalize(VAR)" defaultValue="" alwaysStopAt="true" />
<context>
<option name="JAVA_EXPRESSION" value="false" />
<option name="JAVA_DECLARATION" value="true" />
</context>
</template>
这几乎可以工作,除了 typeOfVariable("this." + VAR)
没有。我只是猜测如何调用此方法,因为我找不到任何关于表达式中使用的语法的文档,除了 this page,它甚至没有提到脚本语言名称或使谷歌搜索更容易的东西。
如何修复对 typeOfVariable
的调用?
额外问题:如何让 complete()
for VAR
只显示字段?
类似的问题,但没有开始:Live Template for Fluent-API Builder in IntelliJ
将 typeOfVariable("this." + VAR)
替换为 typeOfVariable(VAR)
。
编辑:
另一种生成生成器方法的方法是使用适当的 setter 模板(而不是实时模板)。
https://www.jetbrains.com/help/idea/2016.1/generate-setter-dialog.html
已经有一个名为 "Builder" 的内置 setter 模板,它生成 setter,例如:
public Foo setBar(int bar) {
this.bar = bar;
return this;
}
您可以创建自己的模板(例如通过复制它)并更改它,使方法前缀为 with
。
并使生成的方法参数最终转到设置:
Editor | Code Style | Java
- Select 代码生成选项卡
- 勾选使生成的参数最终化