在 IntelliJ 中自动为每个参数生成 `Objects.requireNonNull` 行?

Bas*_*que 5 java intellij-idea parameter-passing auto-generate notnull

IntelliJ 2018 中是否有一种方法可以自动生成检查任何参数中传递的空值的代码行?

\n\n

我希望 IntelliJ 改变这一点:

\n\n
// ----------|  Constructor  |-----------------------------------\npublic DailyProduct ( LocalDate localDate , String name , Integer quantity ) {\n    this.localDate = localDate;\n    this.name = name;\n    this.quantity = quantity;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 到此:

\n\n
// ----------|  Constructor  |-----------------------------------\npublic DailyProduct ( LocalDate localDate , String name , Integer quantity , BigDecimal quality , BigDecimal realmq , BigDecimal cost ) {\n    Objects.requireNonNull( localDate );  // \xe2\xac\x85 Generate these checks for null values.\n    Objects.requireNonNull( name );\n    Objects.requireNonNull( quantity );\n\n    this.localDate = localDate;\n    this.name = name;\n    this.quantity = quantity;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果 IntelliJ 可以编写所有参数到成员的分配使用Objects.requireNonNull. 所以这:

\n\n
// ----------|  Constructor  |-----------------------------------\npublic DailyProduct ( LocalDate localDate , String name , Integer quantity , BigDecimal quality , BigDecimal realmq , BigDecimal cost ) {\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xe2\x80\xa6 会变成这样:

\n\n
// ----------|  Constructor  |-----------------------------------\npublic DailyProduct ( LocalDate localDate , String name , Integer quantity ) {\n    this.localDate = Objects.requireNonNull( localDate );  // \xe2\xac\x85 Generate all these lines entirely.\n    this.name = Objects.requireNonNull( name );\n    this.quantity = Objects.requireNonNull( quantity );\n}\n
Run Code Online (Sandbox Code Playgroud)\n

hce*_*hce 6

您可以尝试以下操作:

在“设置/实时模板”中创建一个新的实时模板

在此输入图像描述

使用 [编辑变量] 定义 $content$ 变量:

在此输入图像描述

使用以下 groovyScript:

groovyScript("def params = _1.collect { 'this.' + it + ' = Objects.requireNonNull(' + it + ');' }.join(); params", methodParameters());

现在当你使用缩写时

在此输入图像描述

你应该得到以下内容

在此输入图像描述

如果有帮助请告诉我。