Eclipse中自動生成get/set時攜帶注釋給get/set
編碼的時候通常要用到 JavaBean ,而在我們經常把注釋寫在字段上面,但生成的Get/Set方法不會生成,通過修改Eclipse源碼可解決。效果如下:
- /**
- * 員工ID
- */
- private String userid;
- /**
- * 獲取員工ID
- * @return userid 員工ID
- */
- public String getUserid() {
- return userid;
- }
- /**
- * 設置員工ID
- * @param userid 員工ID
- */
- public void setUserid(String userid) {
- this.userid = userid;
- }
解決方案如下:
通過反編譯技術,修改ECLIPSE的org.eclipse.jdt.ui_3.3.1.r331_v20070906.jar包中的
org.eclipse.jdt.internal.corext.codemanipulation.GetterSetterUtil類
下的getSetterStub及getGetterStub函數,來實現生成getter/setter時,注釋使用成員的注釋(如果成員的注釋有的話,如果沒有則使用注釋模板生成,如果選擇了生成getter/setter需要生成code comment的話)
getSetterStub函數修改的地方為:
將原:
if(addComments)
{
String comment = CodeGeneration.getSetterComment(field.getCompilationUnit(), parentType.getTypeQualifiedName('.'), setterName, field.getElementName(), typeName, argname, accessorName, lineDelim);
修改為:
if(addComments)
{
String comment = CodeGeneration.getSetterComment(field.getCompilationUnit(), parentType.getTypeQualifiedName('.'), setterName, field.getElementName(), typeName, argname, accessorName, lineDelim);
ISourceRange sr = field.getJavadocRange();
if( null != sr )
comment = field.getSource().substring( 0, sr.getLength() );
getGetterStub函數修改的地方為:
將原:
if(addComments)
{
String comment = CodeGeneration.getGetterComment(field.getCompilationUnit(), parentType.getTypeQualifiedName('.'), getterName, field.getElementName(), typeName, accessorName, lineDelim);
修改為:
if(addComments)
{
String comment = CodeGeneration.getGetterComment(field.getCompilationUnit(), parentType.getTypeQualifiedName('.'), getterName, field.getElementName(), typeName, accessorName, lineDelim);
ISourceRange sr = field.getJavadocRange();
if( null != sr )
comment = field.getSource().substring( 0, sr.getLength() );
