自定义“代码”> `Generate`> IntelliJ中的“构造函数”

时间:2017-08-21 20:39:25

标签: java intellij-idea constructor code-generation

我想在选择Code>时自定义IntelliJ 2017.2生成的参数的命名。 Generate> Constructor来:

  • 标记他们final
  • Arg附加到每个变量名称的末尾。

例如,firstNameArg& lastNameArg而不是firstName& lastName

有没有办法自定义构造函数代码的生成?

此问题Customizing of code generation in IntelliJ IDEA类似,但(a)未提及构造函数,(b)可能已过时。

1 个答案:

答案 0 :(得分:2)

我不认为IntelliJ提供了这个OOTB。或许,您可以通过Preferences > Editor > Live Templates使用Live Template

模板文字:

private final $parameterType$ $parameterName$;

public $constructorClass$(final $parameterType$ $parameterName$$parameterNameSuffix$){
    this.$parameterName$ = $parameterName$$parameterNameSuffix$;
}

更改"适用性"实时模板的内容是:

  • Java > Declaration
  • Java > Smart type completion

点击Edit variables并设置与每个变量相关联的Expression,如下所示:

  • parameterType:completeSmart()
  • parameterName:suggestVariableName()
  • constructorClass:className()
  • parameterNameSuffix:camelCase(String)

以下是一些屏幕截图,显示了它的实际效果:

enter image description here

enter image description here

enter image description here

enter image description here

然而,这种方法有一些警告(其中一些可能是您的用例的交易破坏者):

  • 它不能应用于预先存在的类,即它不能查询类,查找其成员并从中生成构造函数。相反,它是一种触发类成员声明的方式,它会在您声明类成员时动态创建构造函数。
  • 如果您希望它支持多个类成员/构造函数参数,那么您可能必须为单个arg构造函数创建一个实时模板,然后将其复制为一个两个arg构造函数,再复制一个三个arg构造函数构造函数等。