Eclipse中自动生成get/set时携带注释给get/set

Eclipse中自动生成get/set时携带注释给get/set

 编码的时候通常要用到 JavaBean ,而在我们经常把注释写在字段上面,但生成的Get/Set方法不会生成,通过修改Eclipse源码可解决。效果如下:

  1. /**  
  2.  * 员工ID  
  3.  */  
  4. private String userid;   
  5. /**  
  6.  * 获取员工ID  
  7.  * @return userid 员工ID  
  8.  */  
  9. public String getUserid() {   
  10.     return userid;   
  11. }   
  12. /**  
  13.  * 设置员工ID  
  14.  * @param userid 员工ID  
  15.  */  
  16. public void setUserid(String userid) {   
  17.     this.userid = userid;   
  18. }  

 

解决方案如下:

通过反编译技术,修改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() );

posted @ 2018-09-18 17:06  1156740846  阅读(1732)  评论(0编辑  收藏  举报