3

多くの場合、コードでビルダー メソッドを作成する必要があります。これらのメソッドは getter に似ていますが、代わりにreturn thisを使用します。withget

そのタスクを高速化するために、IDEA でライブ テンプレートを作成したいと思います。

これは私が得た距離です:

ビルダーの構成

~/.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)これは、そうでない場合を除いて、ほとんど機能します。このメソッドを呼び出す方法を推測しました。これは、このページを除いて、式で使用される構文に関するドキュメントが見つからなかったためです。このページには、スクリプト言語の名前やグーグルを簡単にする何かについても言及されていません。

への呼び出しを修正するにはどうすればよいtypeOfVariableですか?

おまけの質問:フィールドのみを表示するにはどうすればよいcomplete()ですか?VAR

同様の質問ですが、開始すらありません: IntelliJ の Fluent-API Builder のライブ テンプレート

4

1 に答える 1

3

に置き換えtypeOfVariable("this." + VAR)ますtypeOfVariable(VAR)

編集:

ビルダー メソッドを生成するもう 1 つの方法は、(ライブ テンプレートの代わりに) 適切なセッター テンプレートを使用することです。
https://www.jetbrains.com/help/idea/2016.1/generate-setter-dialog.html

次のようなセッターを生成する「ビルダー」という名前の組み込みセッター テンプレートが既にあります。

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

独自のテンプレートを作成し (たとえば、コピーして)、メソッドの接頭辞がwith.
生成されたメソッドパラメーターを最終的にするには、設定に移動します。

  • Editor | Code Style | Java
  • [コード生成] タブを選択します
  • Make generated parameters final にチェックを入れる

IntelliJ IDEA は自動生成されたセッターに final を追加します

于 2016-06-05T08:46:48.433 に答える