IntelliJ 可以为 Java 类 生成可链接的 setters/mutators 吗?
Can IntelliJ generate chainable setters/mutators for Java classes?
是否可以在 IntelliJ IDEA 中生成可链接的字段修改器?最好使用 set
以外的前缀,以避免违反约定。假设 withX
是 setX
.
的链式伙伴
例如,给定这个 class 存根
class SomeClass {
private String foo;
}
我可以使用 Generate -> Setters 来生成一个 public void setFoo(String foo)
方法。
class SomeClass {
private String foo;
public void setFoo(String foo) {
this.foo = foo;
}
}
是否有类似的方法来生成这样的 public SomeClass withFoo(String foo)
方法?
class SomeClass {
private String foo;
public SomeClass withFoo(String foo) {
this.foo = foo;
return this;
}
}
您实际上不需要安装任何 third-party 插件。 IDEA 提供了这个功能out-of-the-box。以下是实现此目的的步骤:
- Select 代码|生成(或按 Alt+Insert)然后 select "Setter".
- 在打开的window中点击upper-right角的三点按钮。
- 单击 upper-left 角的绿色加号以创建新的 setter 模板。随意命名。
- 将以下代码片段放入右侧输入面板(实际上这是默认的 "Builder" 模板,将 "set" 前缀替换为 "with"):
#set($paramName = $helper.getParamName($field, $project))
public ##
#if($field.modifierStatic)
static void ##
#else
$classSignature ##
#end
with$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
$field.name = $paramName;
#if(!$field.modifierStatic)
return this;
#end
}
- 单击 "OK" 并将生成的 setter 插入您 class。
你应该只做一次。以后您只需 select 您的 setter 模板即可生成它。
是否可以在 IntelliJ IDEA 中生成可链接的字段修改器?最好使用 set
以外的前缀,以避免违反约定。假设 withX
是 setX
.
例如,给定这个 class 存根
class SomeClass {
private String foo;
}
我可以使用 Generate -> Setters 来生成一个 public void setFoo(String foo)
方法。
class SomeClass {
private String foo;
public void setFoo(String foo) {
this.foo = foo;
}
}
是否有类似的方法来生成这样的 public SomeClass withFoo(String foo)
方法?
class SomeClass {
private String foo;
public SomeClass withFoo(String foo) {
this.foo = foo;
return this;
}
}
您实际上不需要安装任何 third-party 插件。 IDEA 提供了这个功能out-of-the-box。以下是实现此目的的步骤:
- Select 代码|生成(或按 Alt+Insert)然后 select "Setter".
- 在打开的window中点击upper-right角的三点按钮。
- 单击 upper-left 角的绿色加号以创建新的 setter 模板。随意命名。
- 将以下代码片段放入右侧输入面板(实际上这是默认的 "Builder" 模板,将 "set" 前缀替换为 "with"):
#set($paramName = $helper.getParamName($field, $project))
public ##
#if($field.modifierStatic)
static void ##
#else
$classSignature ##
#end
with$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))($field.type $paramName) {
#if ($field.name == $paramName)
#if (!$field.modifierStatic)
this.##
#else
$classname.##
#end
#end
$field.name = $paramName;
#if(!$field.modifierStatic)
return this;
#end
}
- 单击 "OK" 并将生成的 setter 插入您 class。
你应该只做一次。以后您只需 select 您的 setter 模板即可生成它。