eclipse 中get set方法自动生成注释

1、一般我们用eclipse做开发时,不可避免的需要创建新的javabean,此时我们在设定get与set方法一般都是用eclipse自带的生成工具,但是这样生成的get与set方法是没有注释,如此还需要我们手动添加,太不方便了。下面就说明下如何修改eclipse中的jar文件,从而达到可以自动生成注释的功能,而且统一的编码风格对于一个项目来说也是必要的。

   先上结果图

下面详细说明步骤

1、先在eclipse中plugins下面找到这个jar包org.eclipse.jdt.ui_xxx.jar

    用反编译工具(jd-gui)打开,找到这个org.eclipse.jdt.internal.corext.codemanipulation目录下的GetterSetterUtil.class文,保存为java文件到任意目录下。

2、新建一个java工程,将GetterSetterUtil.java文件copy进去,请保证包名不变。此时应该有需要报错,将需要的jar导入,在eclipse中plugins下面均可以找到,大致如下面

然后找到代码中getSetterStub与getGetterStub两处

添加如下代码

ISourceRange sr = field.getJavadocRange();
if (sr != null)
{
  String fieldComment = field.getSource().substring(0, sr.getLength()).replaceAll("/", "").replaceAll("\\*", "").trim();
  comment = comment.replaceAll("bare_field_comment", fieldComment);
}
else
{
  String str = getLineComment((SourceField)field);
  if (str != null) {
    comment = comment.replaceAll("bare_field_comment", str);
  }
}
如下图

并在class最后添加getLineComment方法

public static String getLineComment(SourceField field) throws JavaModelException {
    ISourceRange range = field.getSourceRange();
    if (range == null) {
        return null;
    }
    IBuffer buf = null;
    if (field.isBinary()) {
        buf = field.getClassFile().getBuffer();
    } else {
        ICompilationUnit compilationUnit = field.getCompilationUnit();
        if (!compilationUnit.isConsistent()) {
            return null;
        }
        buf = compilationUnit.getBuffer();
    }
    int start = range.getOffset();
    int length = range.getLength();
    if ((length > 0) && (buf.getChar(start) == '/')) {
        IScanner scanner = ToolFactory.createScanner(true, false, false, false);
        try {
            scanner.setSource(buf.getText(start, length).toCharArray());
            int docOffset = -1;
            int docEnd = -1;

            int terminal = scanner.getNextToken();
            switch (terminal) {
            case 1003:
                terminal = scanner.getNextToken();
                break;
            case 1001:
                docOffset = scanner.getCurrentTokenStartPosition();
                docEnd = scanner.getCurrentTokenEndPosition() + 1;
                terminal = scanner.getNextToken();
                break;
            case 1002:
                terminal = scanner.getNextToken();
            }
            if (docOffset != -1) {
                SourceRange sr = new SourceRange(docOffset + start, docEnd - docOffset);
                String str = field.getSource().substring(0, sr.getLength());
                char[] c = str.toCharArray();
                int beginIndex = 0;
                char[] arrayOfChar1;
                int j = (arrayOfChar1 = c).length;
                for (int i = 0; i < j; i++) {
                    char cr = arrayOfChar1[i];
                    if (cr != '/') {
                        break;
                    }
                    beginIndex++;
                }
                return str.substring(beginIndex).trim();
            }
        } catch (InvalidInputException localInvalidInputException) {
        } catch (IndexOutOfBoundsException localIndexOutOfBoundsException) {
        }
    }
    return null;
}
如此修改完毕。

3、此时我们备份先前的org.eclipse.jdt.ui_xxx.jar包,用winrar打开(直接打开,不是解压缩),把我们修改过后的class文件导入替换原来的文件,如此jar包修改完毕。(次过程需要关闭eclipse)

4、重新打开eclipse,找到下面的菜单


get方法修改为:

/** 
 * 获取  bare_field_comment 
 * @return ${bare_field_name} bare_field_comment 
 */ 
set方法修改为:

/** 
 * 设置 bare_field_comment 
 * @param ${param} bare_field_comment 
 */

如此,全部修改完毕,此时生成的set与get方法就会自动的带上注释了。


下面附上本人自己版本下修改过后的class文件。

https://pan.baidu.com/s/1gheqGXt

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值