在 IntelliJ 中自定义“代码”>“生成”>“构造函数”

Bas*_*que 5 java constructor code-generation intellij-idea

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

  • 标记它们final
  • 附加Arg到每个变量名称的末尾。
    例如,firstNameArg&lastNameArg而不是firstName& lastName
  • 用 注释每个参数@NotNull

有什么方法可以自定义构造函数代码的生成吗?

这个问题,Customizing of code Generation in IntelliJ IDEA,是类似的,但 (a) 不涉及构造函数,并且 (b) 可能已经过时。

gly*_*ing 3

我认为 IntelliJ 不提供此 OOTB。也许,您可以通过Preferences > Editor > Live Templates.

模板文本:

private final $parameterType$ $parameterName$;

public $constructorClass$(final $parameterType$ $parameterName$$parameterNameSuffix$){
    this.$parameterName$ = $parameterName$$parameterNameSuffix$;
}
Run Code Online (Sandbox Code Playgroud)

将实时模板的“适用性”更改为:

  • Java > Declaration
  • Java > Smart type completion

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

  • 参数类型:completeSmart()
  • 参数名称: suggestVariableName()
  • 构造函数类:类名()
  • 参数名称后缀:驼峰命名法(字符串)

以下是一些显示其实际运行情况的屏幕截图:

在此输入图像描述

在此输入图像描述

在此输入图像描述

在此输入图像描述

但是,这种方法有一些警告(其中一些可能会破坏您的用例):

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