【问题标题】:Can IntelliJ generate chainable setters/mutators for Java classes?IntelliJ 可以为 Java 类生成可链接的 setter/mutator 吗?
【发布时间】:2018-08-15 16:13:34
【问题描述】:

是否可以在 IntelliJ IDEA 中生成可链接的字段修改器?最好使用set 以外的前缀以避免违反约定。假设withXsetX 的可链接伴侣。

例如,给定这个类存根

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;
    }
}

【问题讨论】:

标签: java intellij-idea setter mutators


【解决方案1】:

您实际上不需要安装任何第三方插件。 IDEA 开箱即用地提供了此功能。以下是实现此目的的步骤:

  1. 选择代码|生成(或按 Alt+Insert)然后选择“Setter”。
  2. 在打开的窗口中点击右上角的三个点按钮。
  3. 单击左上角的绿色加号以创建新的 setter 模板。随意命名。
  4. 将以下代码 sn -p 放入右侧输入面板(实际上这是默认的“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
}
  1. 单击“确定”并将生成的 setter 插入到您的类中。

你应该只做一次。以后您只需选择您的 setter 模板即可生成它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-02
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    • 2013-12-13
    • 1970-01-01
    相关资源
    最近更新 更多