IDEA设置生成带注释的getter和setter解决方案 (图文教程)

时间:2024-01-21 21:50:55

近日在研究重构代码的时候有用到idea的不少插件,比如CheckStyle,同时下载了阿里的开发规约,收到不少启发。

规约中会要求所有的方法都有Javadoc,但是通常我们用idea默认生成的getter和setter方法是不带注释的,当然,我们同样可以设置idea像MyEclipse一样生成带有Javadoc的模板,具体解决方案如下:

 

比如我们有这么一个pojo类:

/**
 * 人类.
 * @author eric
 */
public final class People {

    /**
     * 姓名.
     */
    private String name;
    /**
     * 年龄.
     */
    private Integer age;

}

这个时候我们按下 Alt + Insert (Windows),或者 Command + N (MacOS)来打开生成窗口:

这里我们选择Getter and Setter。

打开如下窗口:

我们点击如图箭头所示的地方,打开如下视图:

 

然后我们新建一个Template,点击图中的 "+" 号,然后输入名称(当然你可以起个自己喜欢的名称)

点击OK。之后在编辑区域复制粘贴如下代码:

/**
 * Gets the value of $field.name
 * @return the value of $field.name
 */
public ##
#if($field.modifierStatic)
    static ##
#end
$field.type ##
#set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project))))
#if ($field.boolean && $field.primitive)
    #if ($StringUtil.startsWithIgnoreCase($name, 'is'))
        #set($name = $StringUtil.decapitalize($name))
    #else
        is##
    #end
#else
    get##
#end
${name}() {
    return $field.name;
}

 

完毕后点击OK。

 

Setter的配置同上一致,我们只需将编辑区内的代码改下(当然Template Name也可以改下:D):

/**
 * Sets the $field.name
 * <p>You can use get$StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier($helper.getPropertyName($field, $project)))() to get the value of $field.name</p>
 * @param $field.name $field.name
 */
#set($paramName = $helper.getParamName($field, $project))
public ##
#if($field.modifierStatic)
    static ##
#end
void set$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;
}

 

下面就让我们来看下成果:

在这里注意要选择我们刚配置好的Template,而不是Default。

点击OK。

到这里算是大功告成了。

 

当然,你也可以参考我的写法来自定义生成的注释的风格和样式,仅供参考。