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文件。
/s/1gheqGXt