如何配置在IntelliJ IDEA中生成构建器方法的实时模板?

时间:2016-06-05 07:32:01

标签: intellij-idea live-templates

我经常需要在代码中创建构建器方法。这些方法与getter类似,但它们return this并且使用with而不是get

为了更快地执行该任务,我想在IDEA中创建一个实时模板。

这到底有多远:

configuration of the builder

(在~/.IntelliJIdea14/config/templates/user.xml中,这看起来像这样:)

<template name="builderMethod" value="public $CLASS_NAME$ with$VAR_GET$(final $TYPE$ $PARAM_NAME$) {&#10;    this.$VAR$ = $PARAM_NAME$;&#10;    return this;&#10;}" 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(&quot;this.&quot; + 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() VAR仅显示字段?

类似的问题但不是没有开始:Live Template for Fluent-API Builder in IntelliJ

1 个答案:

答案 0 :(得分:2)

typeOfVariable("this." + VAR)替换为typeOfVariable(VAR)

修改

生成构建器方法的另一种方法是使用适当的setter模板(而不是实时模板) https://www.jetbrains.com/help/idea/2016.1/generate-setter-dialog.html

已经有一个内置的setter模板名为&#34; Builder&#34;它会生成诸如以下的setter:

public Foo setBar(int bar) {
  this.bar = bar;
  return this;
}

您可以创建自己的模板(例如通过复制它)并进行更改,使方法前缀为with
并使生成的方法参数最终转到设置:

  • Editor | Code Style | Java
  • 选择代码生成标签
  • 勾选生成的参数最终

IntelliJ IDEA add final to auto-generated setters