Ich muss oft Builder-Methoden in meinem Code erstellen. Diese Methoden sind ähnlich wie Getter, aber sie verwenden return this
und sie verwenden with
anstelle von get
.Wie kann ich eine Live-Vorlage konfigurieren, die eine Builder-Methode in IntelliJ IDEA generiert?
Um mit dieser Aufgabe schneller zu sein, möchte ich eine Live-Vorlage in IDEA erstellen. Diese
, wie weit ich bekam:
(in ~/.IntelliJIdea14/config/templates/user.xml
dies wie folgt aussieht :)
<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>
Diese fast funktioniert, mit Ausnahme von typeOfVariable("this." + VAR)
, die nicht der Fall ist. Ich habe nur getippt, wie ich diese Methode aufrufen soll, da ich keine Dokumentation über die in den Ausdrücken verwendete Syntax finden konnte, mit Ausnahme von this page, in der nicht einmal der Name einer Skriptsprache erwähnt wird oder etwas, das das Suchen einfacher macht.
Wie behebe ich den Anruf zu typeOfVariable
?
Bonus Frage: Wie kann ich complete()
für VAR
nur Felder anzeigen?
ähnliche Frage aber nicht hat noch nicht einmal einen Anfang: Live Template for Fluent-API Builder in IntelliJ
In Bezug auf den Bonus erzeugt Stellen Frage: Ich glaube nicht, dass es möglich ist, nur Felder aufzulisten. – binoternary
Es ist wahrscheinlich bequemer, wenn Sie die Option "Skip if defined" für 'TYPE'- und' CLASS_NAME'-Variablen aktivieren, da Sie wahrscheinlich nie die für sie generierten Werte ändern müssen. – binoternary