编码的时候通常要用到 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
找到Eclipse中Jar包:org.eclipse.jdt.ui_*.jar,进行备份
找到org.eclipse.jdt.internal.corext.codemanipulation.GetterSetterUtil.class
直接用附件中的class文件进行替换,重启Eclipse
设置注释风格:
Window->Preferences->Java->CodeStyle->Code Templates->Comments->Getters/Setters
Getters:
/**

  • 获取${bare_field_name}
  • @return ${bare_field_name} ${bare_field_name}
    /
    Setters:
    /
    *
  • 设置${bare_field_name}
  • @param ${bare_field_name} ${bare_field_name}
    */
    注意:生成Get/Set方法时勾选上Generate method comments
    OK,成功。

在eclipse4.2上测试通过。

原文:
http://superich2008.iteye.com/blog/1829868

替换GetterSetterUtil.class的原码:

package org.eclipse.jdt.internal.corext.codemanipulation;import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.*;
import org.eclipse.jdt.core.dom.*;
import org.eclipse.jdt.core.dom.rewrite.ASTRewrite;
import org.eclipse.jdt.internal.corext.dom.ASTNodes;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.internal.corext.util.JdtFlags;
import org.eclipse.jdt.ui.CodeGeneration;/*** @author yaku2688@126.com*/
public class GetterSetterUtil {private static final String EMPTY[] = new String[0];private GetterSetterUtil() {}public static String getGetterName(IField field, String excludedNames[])throws JavaModelException {boolean useIs = StubUtility.useIsForBooleanGetters(field.getJavaProject());return getGetterName(field, excludedNames, useIs);}private static String getGetterName(IField field, String excludedNames[],boolean useIsForBoolGetters) throws JavaModelException {if (excludedNames == null)excludedNames = EMPTY;return getGetterName(field.getJavaProject(), field.getElementName(),field.getFlags(), useIsForBoolGetters&& JavaModelUtil.isBoolean(field), excludedNames);}public static String getGetterName(IVariableBinding variableType,IJavaProject project, String excludedNames[], boolean isBoolean) {boolean useIs = StubUtility.useIsForBooleanGetters(project)&& isBoolean;return getGetterName(project, variableType.getName(), variableType.getModifiers(), useIs, excludedNames);}public static String getGetterName(IJavaProject project, String fieldName,int flags, boolean isBoolean, String excludedNames[]) {return NamingConventions.suggestGetterName(project, fieldName, flags,isBoolean, excludedNames);}public static String getSetterName(IVariableBinding variableType,IJavaProject project, String excludedNames[], boolean isBoolean) {return getSetterName(project, variableType.getName(), variableType.getModifiers(), isBoolean, excludedNames);}public static String getSetterName(IJavaProject project, String fieldName,int flags, boolean isBoolean, String excludedNames[]) {return NamingConventions.suggestSetterName(project, fieldName, flags,isBoolean, excludedNames);}public static String getSetterName(IField field, String excludedNames[])throws JavaModelException {if (excludedNames == null)excludedNames = EMPTY;return NamingConventions.suggestSetterName(field.getJavaProject(),field.getElementName(), field.getFlags(), JavaModelUtil.isBoolean(field), excludedNames);}public static IMethod getGetter(IField field) throws JavaModelException {String getterName = getGetterName(field, EMPTY, true);IMethod primaryCandidate = JavaModelUtil.findMethod(getterName,new String[0], false, field.getDeclaringType());if (!JavaModelUtil.isBoolean(field) || primaryCandidate != null&& primaryCandidate.exists()) {return primaryCandidate;} else {String secondCandidateName = getGetterName(field, EMPTY, false);return JavaModelUtil.findMethod(secondCandidateName, new String[0],false, field.getDeclaringType());}}public static IMethod getSetter(IField field) throws JavaModelException {String args[] = { field.getTypeSignature() };return JavaModelUtil.findMethod(getSetterName(field, EMPTY), args,false, field.getDeclaringType());}/*** Set方法注释* @param field* @param setterName* @param addComments* @param flags* @return* @throws CoreException*/public static String getSetterStub(IField field, String setterName,boolean addComments, int flags) throws CoreException {String fieldName = field.getElementName();IType parentType = field.getDeclaringType();String returnSig = field.getTypeSignature();String typeName = Signature.toString(returnSig);IJavaProject project = field.getJavaProject();String accessorName = NamingConventions.removePrefixAndSuffixForFieldName(project, fieldName, field.getFlags());String argname = StubUtility.suggestArgumentName(project, accessorName,EMPTY);boolean isStatic = Flags.isStatic(flags);boolean isSync = Flags.isSynchronized(flags);boolean isFinal = Flags.isFinal(flags);String lineDelim = "\n";StringBuffer buf = new StringBuffer();if (addComments) {String comment = CodeGeneration.getSetterComment(field.getCompilationUnit(),parentType.getTypeQualifiedName('.'),setterName, field.getElementName(), typeName, argname, accessorName,lineDelim);ISourceRange sr = field.getJavadocRange();if (null != sr) {String filedComment = field.getSource();filedComment = filedComment.substring(0, sr.getLength());filedComment = filedComment.replaceAll("[\n,\r,*,/, ,\t]", "");comment = comment.replaceFirst(field.getElementName(), filedComment);int i = comment.lastIndexOf(field.getElementName());int j = getCount(comment, field.getElementName());if (i != -1 && j >= 2) {comment = comment.substring(0, i) + filedComment + comment.substring(i + field.getElementName().length());}}if (comment != null) {buf.append(comment);buf.append(lineDelim);}}buf.append(JdtFlags.getVisibilityString(flags));buf.append(' ');if (isStatic)buf.append("static ");if (isSync)buf.append("synchronized ");if (isFinal)buf.append("final ");buf.append("void ");buf.append(setterName);buf.append('(');buf.append(typeName);buf.append(' ');buf.append(argname);buf.append(") {");buf.append(lineDelim);boolean useThis = StubUtility.useThisForFieldAccess(project);if (argname.equals(fieldName) || useThis && !isStatic)if (isStatic)fieldName = parentType.getElementName() + '.' + fieldName;elsefieldName = "this." + fieldName;String body = CodeGeneration.getSetterMethodBodyContent(field.getCompilationUnit(), parentType.getTypeQualifiedName('.'),setterName, fieldName, argname, lineDelim);if (body != null)buf.append(body);buf.append("}");buf.append(lineDelim);return buf.toString();}/*** Get方法注释* @param field* @param getterName* @param addComments* @param flags* @return* @throws CoreException*/public static String getGetterStub(IField field, String getterName,boolean addComments, int flags) throws CoreException {String fieldName = field.getElementName();IType parentType = field.getDeclaringType();boolean isStatic = Flags.isStatic(flags);boolean isSync = Flags.isSynchronized(flags);boolean isFinal = Flags.isFinal(flags);String typeName = Signature.toString(field.getTypeSignature());String accessorName = NamingConventions.removePrefixAndSuffixForFieldName(field.getJavaProject(), fieldName, field.getFlags());String lineDelim = "\n";StringBuffer buf = new StringBuffer();if (addComments) {//field.getCompilationUnit() 得到当前类文件内容,就是要get,set的东西//parentType.getTypeQualifiedName('.') 得到类名//getterName 拼出get的方法名//field.getElementName() 得到字段名//typeName 类型String comment= CodeGeneration.getGetterComment(field.getCompilationUnit(),parentType.getTypeQualifiedName('.'),getterName,field.getElementName(),typeName, accessorName, lineDelim);ISourceRange sr = field.getJavadocRange();if( null != sr ) {String filedComment = field.getSource();filedComment = filedComment.substring(0, sr.getLength());filedComment = filedComment.replaceAll("[\n,\r,*,/, ,\t]", "");comment = comment.replaceFirst(field.getElementName(), filedComment);int i = comment.lastIndexOf(field.getElementName());int j = getCount(comment, field.getElementName());if (i != -1 && j >= 2) {comment = comment.substring(0, i) + filedComment + comment.substring(i + field.getElementName().length());}}if (comment != null) {buf.append(comment);buf.append(lineDelim);}}buf.append(JdtFlags.getVisibilityString(flags));buf.append(' ');if (isStatic)buf.append("static ");if (isSync)buf.append("synchronized ");if (isFinal)buf.append("final ");buf.append(typeName);buf.append(' ');buf.append(getterName);buf.append("() {");buf.append(lineDelim);boolean useThis = StubUtility.useThisForFieldAccess(field.getJavaProject());if (useThis && !isStatic)fieldName = "this." + fieldName;String body = CodeGeneration.getGetterMethodBodyContent(field.getCompilationUnit(), parentType.getTypeQualifiedName('.'), getterName, fieldName, lineDelim);if (body != null)buf.append(body);buf.append("}");buf.append(lineDelim);return buf.toString();}private static int getCount(String str, String sign) {// 查找某一字符串中str,特定子串sign的出现次数if (str == null)return 0;double i = str.length();str = str.replaceAll(sign, "");// 将串中的字符sign替换成""return (int) (i - str.length()) / sign.length();}public static Expression getAssignedValue(ASTNode node,ASTRewrite astRewrite, Expression getterExpression,ITypeBinding variableType, boolean is50OrHigher) {org.eclipse.jdt.core.dom.InfixExpression.Operator op = null;AST ast = astRewrite.getAST();if (isNotInBlock(node))return null;if (node.getNodeType() == 7) {Assignment assignment = (Assignment) node;Expression rightHandSide = assignment.getRightHandSide();Expression copiedRightOp = (Expression) astRewrite.createCopyTarget(rightHandSide);if (assignment.getOperator() == org.eclipse.jdt.core.dom.Assignment.Operator.ASSIGN) {ITypeBinding rightHandSideType = rightHandSide.resolveTypeBinding();copiedRightOp = createNarrowCastIfNessecary(copiedRightOp,rightHandSideType, ast, variableType, is50OrHigher);return copiedRightOp;}if (getterExpression != null) {InfixExpression infix = ast.newInfixExpression();infix.setLeftOperand(getterExpression);infix.setOperator(ASTNodes.convertToInfixOperator(assignment.getOperator()));infix.setRightOperand(copiedRightOp);ITypeBinding infixType = infix.resolveTypeBinding();return createNarrowCastIfNessecary(infix, infixType, ast,variableType, is50OrHigher);}} else if (node.getNodeType() == 37) {PostfixExpression po = (PostfixExpression) node;if (po.getOperator() == org.eclipse.jdt.core.dom.PostfixExpression.Operator.INCREMENT)op = org.eclipse.jdt.core.dom.InfixExpression.Operator.PLUS;if (po.getOperator() == org.eclipse.jdt.core.dom.PostfixExpression.Operator.DECREMENT)op = org.eclipse.jdt.core.dom.InfixExpression.Operator.MINUS;} else if (node.getNodeType() == 38) {PrefixExpression pe = (PrefixExpression) node;if (pe.getOperator() == org.eclipse.jdt.core.dom.PrefixExpression.Operator.INCREMENT)op = org.eclipse.jdt.core.dom.InfixExpression.Operator.PLUS;if (pe.getOperator() == org.eclipse.jdt.core.dom.PrefixExpression.Operator.DECREMENT)op = org.eclipse.jdt.core.dom.InfixExpression.Operator.MINUS;}if (op != null && getterExpression != null)return createInfixInvocationFromPostPrefixExpression(op,getterExpression, ast, variableType, is50OrHigher);elsereturn null;}private static boolean isNotInBlock(ASTNode parent) {ASTNode statement = parent.getParent();boolean isStatement = statement.getNodeType() != 21;ASTNode block = statement.getParent();boolean isBlock = block.getNodeType() == 8 || block.getNodeType() == 50;boolean isControlStatemenBody = ASTNodes.isControlStatementBody(statement.getLocationInParent());return isStatement || !isBlock && !isControlStatemenBody;}private static Expression createInfixInvocationFromPostPrefixExpression(org.eclipse.jdt.core.dom.InfixExpression.Operator operator,Expression getterExpression, AST ast, ITypeBinding variableType,boolean is50OrHigher) {InfixExpression infix = ast.newInfixExpression();infix.setLeftOperand(getterExpression);infix.setOperator(operator);NumberLiteral number = ast.newNumberLiteral();number.setToken("1");infix.setRightOperand(number);ITypeBinding infixType = infix.resolveTypeBinding();return createNarrowCastIfNessecary(infix, infixType, ast, variableType,is50OrHigher);}private static Expression createNarrowCastIfNessecary(Expression expression, ITypeBinding expressionType, AST ast,ITypeBinding variableType, boolean is50OrHigher) {PrimitiveType castTo = null;if (variableType.isEqualTo(expressionType))return expression;if (is50OrHigher) {if (ast.resolveWellKnownType("java.lang.Character").isEqualTo(variableType))castTo = ast.newPrimitiveType(PrimitiveType.CHAR);if (ast.resolveWellKnownType("java.lang.Byte").isEqualTo(variableType))castTo = ast.newPrimitiveType(PrimitiveType.BYTE);if (ast.resolveWellKnownType("java.lang.Short").isEqualTo(variableType))castTo = ast.newPrimitiveType(PrimitiveType.SHORT);}if (ast.resolveWellKnownType("char").isEqualTo(variableType))castTo = ast.newPrimitiveType(PrimitiveType.CHAR);if (ast.resolveWellKnownType("byte").isEqualTo(variableType))castTo = ast.newPrimitiveType(PrimitiveType.BYTE);if (ast.resolveWellKnownType("short").isEqualTo(variableType))castTo = ast.newPrimitiveType(PrimitiveType.SHORT);if (castTo != null) {CastExpression cast = ast.newCastExpression();if (ASTNodes.needsParentheses(expression)) {ParenthesizedExpression parenthesized = ast.newParenthesizedExpression();parenthesized.setExpression(expression);cast.setExpression(parenthesized);} else {cast.setExpression(expression);}cast.setType(castTo);return cast;} else {return expression;}}}

本文来自 feng______ 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/Feng______/article/details/22661695?utm_source=copy

Eclipse get/set方法自动加上字段注释相关推荐

  1. idea怎么给类和方法自动快速添加注释的方法(/**@return @Param*/)

    1.生成类的注释 效果图: 1.打开idea项目之后 点击file 2.搜索live,找到File and Code Templates和live Template(后面用) 3.点击File and ...

  2. idea里边创建类的时候和方法自动生成注释

    我们经常写代码的时候需要在类上编写注释,标明这个类是谁写的有什么作用,其实每次写都会发现有很多相同的字段,比如作者,创建时间,类名等,有的时候方法上也要标明方法的返回值,参数等信息,在idea里边我们 ...

  3. 1.14 Java注释:类、方法和字段注释

    一个程序的可读性,关键取决于注释.如果一个程序想二次开发,要读懂前面的程序代码,就必须在程序中有大量的注释文档,所以对于一个优秀的程序员来说,学会在程序中适当地添加注释是非常重要的. 注释除了帮助别人 ...

  4. EF6 T4 Model.TT文件的修改-自动加上注释

    找到mdoel.tt文件然后打开,按照以下操作 第一步:动态库的引用,其中$(SolutionDir)是自动获取项目根目录,有些引用动态库之后还需要引用相关的命名空间才能正确使用,比如System.D ...

  5. IDEA类和方法自动添加注释

    给类自动添加注释信息 给方法自动添加注释信息 给类自动加上注释 第一步点击File里的Settings先到设置里面去 第二步,在Settings里面按照下图顺序找到设置界面,右边即为设置界面 第三步, ...

  6. 织梦php首页老是自动恢复,dede首页网址自动加上index.html问题解决方法

    麦慧网提供:dede首页网址自动加上index.html问题解决方法,dede的首页有index.php和index.html,默认的是index.php重定向到index.html,所以访问时,网址 ...

  7. zend studio自动添加文件注释和方法注释

    zend studio自动添加文件注释和方法注释 进入首选项=>PHP=>Editor=>Template=>New Name\Description\Pattern里面分别填 ...

  8. java 类和方法自动添加注释

    设置文件头File Header 路径为 setting-->editor-->File and Code Templates-->Includes-->File Header ...

  9. idea自动生成类注释和方法注释

    一,自动生成类注释 打开Setting,选在Editor,然后是File and Code Templates 最后是Files 中的Class ,点击class后,编辑右边的红色边框,里边是模板,将 ...

最新文章

  1. MLP多层感知机 学习笔记
  2. python 多层嵌套 json_python解析多层json操作示例
  3. 关系运算符 与 逻辑运算符
  4. Android广播机制(2)
  5. oracle上机题库_Oracle OCP认证考试IZ0-053题库共712题数据库(带中文解析)
  6. 小数转化为百分数(保留小数点后一位有效数字)
  7. toDesk 远程连接软件 连接远程电脑后黑屏
  8. 世嘉土星系统memory mapping システムの使用するメモリのマッピングについて
  9. Excel应用-各地GDP的综合对比图表-Part2(平均线图、复合饼图、瀑布图、帕累托图)
  10. 擎天哥as3教程系列第四回——设计模式运用自如
  11. 网络攻防技术(郑大信安个人总结版)
  12. WPF 自定义绘制显示Grid网格线
  13. android集成Crosswalk内核,屏蔽返回键问题。
  14. 斯坦福cs224n-2021 assignment1-探索词向量—词共现矩阵—SVD(奇异值分解)
  15. thor修改html,f4thor修改工具[thor规则解包打包] | 贝贝吧
  16. 零基础入门Jetson Nano——远程连接
  17. CCF ChinaSoft 2022中国软件大会火热报名中
  18. 回看皮尔斯—皮尔斯的逻辑开篇
  19. 【信息论与编码 沈连丰】第四章:离散信源的信源编码
  20. abb机器人示教器io信号关联_如何在示教器上配置ABB机器人的输入/输出信号?(多图)...

热门文章

  1. 电脑神器软件(二):十分钟玩转potplayer视频播放器
  2. mysql 1862_MySQL 1862 - Your password has expired 解决方案
  3. XMind中文版快捷键指南-MAC和Windows
  4. tick_init();
  5. ios 自己服务器 苹果支付_苹果支付 PHP 服务端处理
  6. 利用ggplot2画出各种漂亮图片详细教程
  7. Google Pixel 2夺得DxOMark排名第一,是否说明双摄并没什么用?
  8. 第四十五篇 信号上升时间的理解
  9. 用户运营浅谈-我的AARRR模型
  10. [模板总结] - 快速选择 (霍尔Quick Selection)