java - 在 IntelliJ 中自定义 `Code` > `Generate` > `Constructor`

标签 java intellij-idea constructor code-generation

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

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

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

这个问题,Customizing of code generation in IntelliJ IDEA , 类似,但 (a) 不引用构造函数,并且 (b) 可能已过时。

最佳答案

我认为 IntelliJ 不提供这种 OOTB。你也许可以使用 Live Template通过 Preferences > Editor > Live Templates

模板文本:

private final $parameterType$ $parameterName$;

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

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

  • Java > 声明
  • Java > 智能类型完成

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

  • 参数类型:completeSmart()
  • 参数名:建议变量名()
  • 构造函数类:类名()
  • 参数名称后缀:驼峰式(字符串)

这里有一些截图展示了它的实际效果:

enter image description here

enter image description here

enter image description here

enter image description here

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

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

关于java - 在 IntelliJ 中自定义 `Code` > `Generate` > `Constructor`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805187/

相关文章:

java - 将 Java 的 HotSwap 功能与 libGDX 结合使用

c++ - 在 C++ 中重载显式构造函数

java - 编译器没有发现实例变量和构造函数初始化期间传递的参数之间存在歧义?

Java 11 应用程序作为轻量级 docker 镜像

java - 如何从 BCryptPasswordEncoder 获取原始密码

java - ArrayList 声明的语法错误

intellij-idea - 在intellij IDEA中将语法颜色代码块复制为rtf?

android - 存储android运行/调试配置IntelliJ idea和svn

c++ - 使用构造函数c++将长整数转换为类对象

java - 使用fragment_Tabbed Activity 将数据保存到Sqlite 数据库