Java 如何快速将表达式转换为空检查?

Java 如何快速将表达式转换为空检查?,java,eclipse,Java,Eclipse,我正在使用Eclipse。我经常使用java.util.Objects.requirennull(T,String)来检查not null,并在给定的参数为null时抛出一个异常和一条适当的消息 例如,当我在Eclipse的帮助下生成构造函数时: public Person(String firstName,String lastName){ this.firstName = firstName; this.lastName = lastName; } 如果参数是强制性的(并非

我正在使用Eclipse。我经常使用
java.util.Objects.requirennull(T,String)
来检查not null,并在给定的参数为null时抛出一个异常和一条适当的消息

例如,当我在Eclipse的帮助下生成构造函数时:

public Person(String firstName,String lastName){
    this.firstName = firstName;
    this.lastName = lastName;
}
如果参数是强制性的(并非所有参数都是强制性的),我希望将其更改为更健壮的参数

public Person(String firstName,String lastName){
    this.firstName = requireNonNull(firstName,"firstName is required"); //static import omitted
    this.lastName = requireNonNull(lastName,"lastName is required");
}
目前,我有我的regex find&replace,我手动小心使用:

 Search: (\w+) (assuming variables do not use underscores)
 Replace: requireNonNull\($1,"$1 is required"\)
手动应用,尤其是使用分号
在两者的末尾,帮助我转换自动生成的构造函数和setter

我的问题是升级:您知道是否可以通过使用宏或其他方式(如果可能,请不要使用自定义插件)来减少按键或点击,从而编辑器选择转换为
requirennoull
调用

例如

变成

import static java.util.Objects.*;

public Person(String firstName,String lastName){
    this.firstName = requireNonNull(firstName,"firstName is required"); 
    this.lastName = lastName;
}
public Person(Individual other){
    requireNonNull(other);
    this.firstName = requireNonNull(other.getFirstName(),"other.getFirstName() is required"); //I may modify the text later, but this is a good starting point
    this.lastName = other.getLastName();
}
例如

变成

import static java.util.Objects.*;

public Person(String firstName,String lastName){
    this.firstName = requireNonNull(firstName,"firstName is required"); 
    this.lastName = lastName;
}
public Person(Individual other){
    requireNonNull(other);
    this.firstName = requireNonNull(other.getFirstName(),"other.getFirstName() is required"); //I may modify the text later, but this is a good starting point
    this.lastName = other.getLastName();
}

将静态导入添加到源文件不是强制性的,即我可以使用
收藏夹
让Eclipse在替换文字后为我添加导入

您可以使用Eclipse代码模板。转到设置>Java>编辑器>模板,并为Java上下文创建新模板。取消选中“自动插入”并将以下代码粘贴到图案字段中:

${:importStatic('java.util.Objects.requireNonNull')}requireNonNull(${word_selection}, "${word_selection} is required")${cursor}
现在,通过选择要替换的变量并按ctrl+space两次,可以在代码中访问此模板

旁注:你也许应该看看。除此之外,它还引入了一个注释,该注释在编译时自动插入这些空检查,因此您可以执行以下操作:

public Person(@NonNull String firstName, @NonNull String lastName){
    this.firstName = firstName;
    this.lastName = lastName;
}

您可以使用Eclipse代码模板来实现这一点。转到设置>Java>编辑器>模板,并为Java上下文创建新模板。取消选中“自动插入”并将以下代码粘贴到图案字段中:

${:importStatic('java.util.Objects.requireNonNull')}requireNonNull(${word_selection}, "${word_selection} is required")${cursor}
现在,通过选择要替换的变量并按ctrl+space两次,可以在代码中访问此模板

旁注:你也许应该看看。除此之外,它还引入了一个注释,该注释在编译时自动插入这些空检查,因此您可以执行以下操作:

public Person(@NonNull String firstName, @NonNull String lastName){
    this.firstName = firstName;
    this.lastName = lastName;
}

伟大的不幸的是,它对我来说不起作用,因为选择上的CTRL+space没有任何作用。此外,如果我在变量名的末尾按两次空格键,则会得到“无模板建议”。这让我担心工作区配置已损坏。会很好的。不幸的是,它对我来说不起作用,因为选择上的CTRL+space没有任何作用。此外,如果我在变量名的末尾按两次空格键,则会得到“无模板建议”。这让我担心工作区配置已损坏。我们会努力的