關於Java編寫多行註釋遇到方法字符串中正好也有註釋符號產生衝突的解決辦法

關於Java註釋遇到的一個小問題

遇到問題:
今天準備重寫一個類的方法時,原本計劃要註釋到原來的代碼:java

public class DefaultCommentGenerator
    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
        field.addJavaDocLine("/** "+introspectedColumn.getRemarks()+"*/");
        if(!this.suppressAllComments) {
            StringBuilder sb = new StringBuilder();
            field.addJavaDocLine("/**");
            field.addJavaDocLine(" * This field was generated by MyBatis Generator.");
            sb.append(" * This field corresponds to the database column ");
            sb.append(introspectedTable.getFullyQualifiedTable());
            sb.append('.');
            sb.append(introspectedColumn.getActualColumnName());
            field.addJavaDocLine(sb.toString());
            this.addJavadocTag(field, false);
            field.addJavaDocLine(" */");
        }
    }
}

結果因爲該方法中有有參數填寫的字符串中正好有註釋符號,結果我要整個代碼塊註釋的話,java就會自動解析到該字符串中的"/"的註釋結束符號,然後面再寫的本身的"/"註釋就無效了,結果就是該代碼會報錯:app

public class DefaultCommentGenerator
    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
        /*原本我想從這開始註釋
        field.addJavaDocLine("/** "+introspectedColumn.getRemarks()+"*/");
        if(!this.suppressAllComments) {
            StringBuilder sb = new StringBuilder();
            field.addJavaDocLine("/**");
            field.addJavaDocLine(" * This field was generated by MyBatis Generator.");
            sb.append(" * This field corresponds to the database column ");
            sb.append(introspectedTable.getFullyQualifiedTable());
            sb.append('.');
            sb.append(introspectedColumn.getActualColumnName());
            field.addJavaDocLine(sb.toString());
            this.addJavadocTag(field, false);
            field.addJavaDocLine(" */");    //結果是Java會覺得個人註釋是以這個字符串中的*/結束的
        }
    }
到這結束*/
}

結果就致使這個代碼中只剩下:ui

public class DefaultCommentGenerator
    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
        "); //結果是Java會覺得個人註釋是以這個字符串中的*/結束的
        }
    }
到這結束*/
}

毫無疑問這是會報錯的。this

解決辦法:

public class DefaultCommentGenerator
    public void addFieldComment(Field field, IntrospectedTable introspectedTable, IntrospectedColumn introspectedColumn) {
    /*從這開始註釋
        field.addJavaDocLine("/** "+introspectedColumn.getRemarks()+"*/");
        if(!this.suppressAllComments) {
            StringBuilder sb = new StringBuilder();
            field.addJavaDocLine("*//**");          //這裏加符號"*/"
            field.addJavaDocLine(" * This field was generated by MyBatis Generator.");
            sb.append(" * This field corresponds to the database column ");
            sb.append(introspectedTable.getFullyQualifiedTable());
            sb.append('.');
            sb.append(introspectedColumn.getActualColumnName());
            field.addJavaDocLine(sb.toString());
            this.addJavadocTag(field, false);
            field.addJavaDocLine(" *//*");          //這裏也須要加符號"/*"
        }
    }
    到這結束*/
}
相關文章
相關標籤/搜索