近日在研究重構代碼的時候有用到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。
到這裏算是大功告成了。
當然,你也可以參考我的寫法來自定義生成的註釋的風格和樣式,僅供參考。