Java 自定义“代码”>`生成`>`IntelliJ中的构造函数
我想在选择Java 自定义“代码”>`生成`>`IntelliJ中的构造函数,java,intellij-idea,constructor,code-generation,Java,Intellij Idea,Constructor,Code Generation,我想在选择codeGenerate构造函数时,自定义IntelliJ 2017.2生成的参数的命名,以: 将它们标记为final 将Arg附加到每个变量名的末尾。例如,firstNameArg&lastNameArg而不是firstName&lastName 用@NotNull注释每个参数 有没有办法自定义构造函数代码的生成 这个问题类似,但(a)没有提到构造函数,(b)可能已经过时。我认为IntelliJ没有提供这种OOTB。您也许可以使用viaPreferences>Editor>liv
code
Generate
构造函数时,自定义IntelliJ 2017.2生成的参数的命名,以:
- 将它们标记为
final
- 将
Arg
附加到每个变量名的末尾。
例如,firstNameArg
&lastNameArg
而不是firstName
&lastName
- 用
@NotNull
注释每个参数
有没有办法自定义构造函数代码的生成
这个问题类似,但(a)没有提到构造函数,(b)可能已经过时。我认为IntelliJ没有提供这种OOTB。您也许可以使用viaPreferences>Editor>livetemplates
模板文本:
private final $parameterType$ $parameterName$;
public $constructorClass$(final $parameterType$ $parameterName$$parameterNameSuffix$){
this.$parameterName$ = $parameterName$$parameterNameSuffix$;
}
将Live模板的“适用性”更改为:
Java>声明
Java>智能类型完成
单击编辑变量
,并设置与每个变量关联的表达式
,如下所示:
- parameterType:completeSmart()
- parameterName:suggestVariableName()
- 构造函数类:className()
- 参数名称后缀:camelCase(字符串)
以下是一些屏幕截图,展示了它的实际应用:
然而,这种方法有一些警告(其中一些可能是您用例的交易破坏者):
- 它不能应用于预先存在的类,也就是说,它不能查询一个类,找到它的成员并从中生成构造函数。相反,它是触发类成员声明的一种方式,并且在声明类成员时动态创建构造函数
- 如果您希望它支持多个类成员/构造函数参数,那么您可能必须为单个arg构造函数创建一个活动模板,然后为两个arg构造函数复制该模板,再次为三个arg构造函数复制该模板,等等
您为什么要这样做?默认参数名称与实际情况相同。很容易手动更改。就我个人而言,我讨厌那种匈牙利命名法。如果你有这么多的参数,手动重命名是一个负担,我会说你的构造函数设计得很糟糕。我认为现在不可能了。顺便说一句,你为什么需要这种功能?为什么是为了避免歧义、避免冲突和可读性。此外,我还编辑了以注意我还希望标记参数final
。