Heim > Java > javaLernprogramm > Hauptteil

Fortgeschrittene Kenntnisse der Ideen-Live-Vorlage, Fortgeschrittene

巴扎黑
Freigeben: 2018-05-17 10:36:22
Original
2368 Leute haben es durchsucht

为了解决用一个命令(宏)给方法,类,js方法添加注释,经过几天的研究.终于得到结果了.

实现的效果如下:

给Java中的method添加方法:

    /** *
     * @Method : addMenu
     * @Description :
     * @param menu :
     * @return : cn.yiyizuche.common.base.ResultMsg
     * @author : Rush.D.Xzj
     * @CreateDate : 2017-06-12 星期一 18:17:42
     *     */public ResultMsg addMenu(Menu menu){
        ResultMsg result = null;return result;
    }
Nach dem Login kopieren

给 Java class 添加注释:

/**
 *
 * @Project : 壹壹OA
 * @Package : cn.yiyizuche.common.ou.menu.controller
 * @Class : MenuController
 * @Description :
 * @author : Rush.D.Xzj
 * @CreateDate : 2017-06-12 星期一 18:15:32
 * @version : V1.0.0
 * @Copyright : 2017 yizukeji Inc. All rights reserved.
 * @Reviewed :
 * @UpateLog :    Name    Date    Reason/Contents
 *             ---------------------------------------
 *                 ***        ****    ****
 * */public class MenuController {
}
Nach dem Login kopieren

给js 的方法添加注释

/**
 *
 * @Method : standardShowBatchCheckBox
 * @Description :
 * @return :
 * @author : Rush.D.Xzj
 * @CreateDate : 2017-06-12 星期一 18:15:21
 * */function standardShowBatchCheckBox(jspElement, dataList, max, valueIdFunction, textFunction, selectedFunction) {
}
Nach dem Login kopieren

现在把答案公布如下

Abbreviation:

cmj
Nach dem Login kopieren

Template text(注1):

**
 *$context$ 
 */
Nach dem Login kopieren

Edit variables:

$context$的代码(主要代码)如下:

groovyScript("def methodName = \"${_1}\"; 
def jsMethodName = \"${_2}\"; 
def outputMethodName = \"${_3}\"; 
def outputDesc = \"${_4}\"; 
def outputParams = \"${_5}\"; 
def outputAuthor = \"${_6}\"; 
def outputReturnType = \"${_7}\"; 
def outputDateTime = \"${_8}\"; 
def outputPackage = \"${_9}\"; 
def outputClass = \"${_10}\"; 
def outputClassOtherInfo = \"${_11}\"; 
def outputProject = \"${_12}\"; 
def outputVersion = \"${_13}\"; 
def outputJsMethodName = \"${_14}\"; 
def outputJsReturnType = \"${_15}\"; 
def result = ''; 
if (methodName != 'null') { 
result += '\\n'; 
result += outputMethodName; 
result += outputDesc; 
result += outputParams; 
result += outputReturnType; 
result += outputAuthor; 
result += outputDateTime; 
result += ' *'; return result;
} else if (jsMethodName != 'null') { 
result += '\\n'; 
result += outputJsMethodName; 
result += outputDesc; 
result += outputJsReturnType; 
result += outputAuthor; 
result += outputDateTime; result += ' *'; return result;
} else { 
result += '\\n'; 
result += outputProject; 
result += outputPackage; 
result += outputClass; 
result += outputDesc; 
result += outputAuthor; 
result += outputDateTime; 
result += outputVersion; 
result += outputClassOtherInfo; 
result += ' *'; return result;
} ", methodName(), jsMethodName(), groovyScript("def methodName = \"${_1}\"; 
def result = ' * @Method : ' + methodName + '\\n'; 
return result;", methodName()), groovyScript("def result = ' * @Description : ' + '\\n'; 
return result;"), groovyScript("if(\"${_1}\".length() == 2) 
{
return '';
} else {
def result=''; 
def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();
for(i = 0; i < params.size(); i++) 
{
result+=' * @param ' + params[i] + ' : ' + '\\n'
}; 
return result;}", methodParameters()), groovyScript("def author = 'Rush.D.Xzj'; 
def result = ' * @author : ' + author + '\\n'; 
return result;"), groovyScript("def returnType = \"${_1}\"; 
def result = ' * @return : ' + returnType + '\\n'; 
return result;", methodReturnType()), groovyScript("def date = \"${_1}\"; 
def time = \"${_2}\"; 
def result = ' * @CreateDate : ' + date + ' ' + time + '\\n'; 
return result;", date("yyyy-MM-dd E"), time("HH:mm:ss")), groovyScript("def currentPackage = \"${_1}\"; 
def result = ' * @Package : ' + currentPackage + '\\n'; 
return result;", currentPackage()), groovyScript("def className = \"${_1}\"; 
def result = ' * @Class : ' + className + '\\n'; 
return result;", className()), groovyScript("def result = ' * @Copyright : 2017 yizukeji Inc. All rights reserved.' + '\\n'; 
result += ' * @Reviewed : ' + '\\n'; result += ' * @UpateLog :    Name    Date    Reason/Contents' + '\\n'; 
result += ' *             ---------------------------------------' + '\\n'; 
result += ' *                 ***        ****    **** ' + '\\n'; 
return result;"), groovyScript("def result = ' * @Project : 壹壹OA' + '\\n'; 
return result;"), groovyScript("def result = ' * @version : V1.0.0' + '\\n'; 
return result;"), groovyScript("def jsMethodName = \"${_1}\"; 
def result = ' * @Method : ' + jsMethodName + '\\n'; 
return result;", jsMethodName()), groovyScript("def result = ' * @return : ' + '\\n'; return result;"))
Nach dem Login kopieren

使用如下:

在xx.java或者 xx.js中输出(注2):

/cmj
Nach dem Login kopieren

后 按 tab键(此键是默认的,可以更改成其他的)

注1 和注2

也可以换成第二种方法(网上大部分的方法):

Template text

*
 *$context$ 
 */
Nach dem Login kopieren

跟注1比较第一行少了一个*,

因此注2就是变成了:

/*cmj
Nach dem Login kopieren

我感觉用我的方法比第二种方法好.

Edit Variable中代码详解

首先我分解了如下的 10几个函数(是小函数):

    // 输出方法名groovyScript("def methodName = \"${_1}\"; def result = ' * @Method : ' + methodName + '\\n'; 
    return result;", methodName())    // 输出描述
    groovyScript("def result = ' * @Description : ' + '\\n'; 
    return result;")    // 输出参数列表的子函数
    groovyScript("if(\"${_1}\".length() == 2) {return '';
    } else {
    def result=''; 
    def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); 
    for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ' : ' + '\\n'}; 
    return result;}", methodParameters())    // 输出    作者的        子函数  这里可以改作者
    groovyScript("def author = 'Rush.D.Xzj'; 
    def result = ' * @author : ' + author + '\\n'; 
    return result;")    // 输出    返回值的   子函数
    groovyScript("def returnType = \"${_1}\"; 
    def result = ' * @return : ' + returnType + '\\n'; 
    return result;", methodReturnType())    // 输出    日期的     字函数, 这个可以更改日期格式
    groovyScript("def date = \"${_1}\"; def time = \"${_2}\"; 
    def result = ' * @CreateDate : ' + date + ' ' + time + '\\n'; 
    return result;", date("yyyy-MM-dd E"), time("HH:mm:ss"))    // 输出Project
    groovyScript("def result = ' * @Project : 壹壹OA' + '\\n'; 
    return result;")    // 输出package
    groovyScript("def currentPackage = \"${_1}\"; 
    def result = ' * @Package : ' + currentPackage + '\\n'; 
    return result;", currentPackage())    // 输出class
    groovyScript("def className = \"${_1}\"; 
    def result = ' * @Class : ' + className + '\\n'; 
    return result;", className())    // 输出copyright/reviewd/updatelog
    groovyScript("def result = ' * @Copyright : 2017 yizukeji Inc. All rights reserved.' + '\\n'; 
    result += ' * @Reviewed : ' + '\\n'; 
    result += ' * @UpateLog :    Name    Date    Reason/Contents' + '\\n'; 
    result += ' *             ---------------------------------------' + '\\n'; 
    result += ' *                 ***        ****    **** ' + '\\n'; 
    return result;")    // 输出version
    groovyScript("def result = ' * @version : V1.0.0' + '\\n'; return result;")    // 输出jsMethodName
    groovyScript("def jsMethodName = \"${_1}\"; def result = ' * @Method : ' + jsMethodName + '\\n'; 
    return result;", jsMethodName())    // 输出 js 的return
    groovyScript("def result = ' * @return : ' + '\\n'; return result;")
Nach dem Login kopieren

然后在主要代码中,需要把上述的10几个函数当做参数供给主要代码使用.

判断是函数,类,js函数主要是通过如下的2个内置变量来实现的:

methodName()
jsMethodName()
Nach dem Login kopieren

当methodName()不为空的时候, 生成 方法的 注释

当jsMethodName()不为空的时候, 生成 js方法的注释

否则生成类的注释

所以上述的代码可以简单的做如下的归类了:

获取相关参数:

    def methodName = \"${_1}\"; 
    def jsMethodName = \"${_2}\"; 
    def outputMethodName = \"${_3}\"; 
    def outputDesc = \"${_4}\"; 
    def outputParams = \"${_5}\"; 
    def outputAuthor = \"${_6}\"; 
    def outputReturnType = \"${_7}\"; 
    def outputDateTime = \"${_8}\"; 
    def outputPackage = \"${_9}\"; 
    def outputClass = \"${_10}\"; 
    def outputClassOtherInfo = \"${_11}\"; 
    def outputProject = \"${_12}\"; 
    def outputVersion = \"${_13}\"; 
    def outputJsMethodName = \"${_14}\"; 
    def outputJsReturnType = \"${_15}\"; 
    def result = '';
Nach dem Login kopieren

判断是哪一种类型的注释(代码片段2):

   if (methodName != 'null') {
        result += '\\n';
        result += outputMethodName;
        result += outputDesc;
        result += outputParams;
        result += outputReturnType;
        result += outputAuthor;
        result += outputDateTime;
        result += ' *';return result;
    } else if (jsMethodName != 'null') {
        result += '\\n';
        result += outputJsMethodName;
        result += outputDesc;
        result += outputJsReturnType;
        result += outputAuthor;
        result += outputDateTime;
        result += ' *';return result;
    } else {
        result += '\\n';
        result += outputProject;
        result += outputPackage;
        result += outputClass;
        result += outputDesc;
        result += outputAuthor;
        result += outputDateTime;
        result += outputVersion;
        result += outputClassOtherInfo;
        result += ' *';return result;
    }
Nach dem Login kopieren

这下就可以了.就把整个这么难看(groopscript搞的?)代码整理的比较清晰了.

我还有如下的几个疑惑/问题需要解决, 如果有朋友能给我答案那就好了.

问题1. 不知道可以通过什么方法获取js方法中的参数列表

问题2. 代码片段2中如果我改成了:

    result += '\\n';if (methodName != 'null') {
        result += outputMethodName;
        result += outputDesc;
        result += outputParams;
        result += outputReturnType;
        result += outputAuthor;
        result += outputDateTime;
    } else if (jsMethodName != 'null') {
        result += '\\n';
        result += outputJsMethodName;
        result += outputDesc;
        result += outputJsReturnType;
        result += outputAuthor;
        result += outputDateTime;
    } else {
        result += '\\n';
        result += outputProject;
        result += outputPackage;
        result += outputClass;
        result += outputDesc;
        result += outputAuthor;
        result += outputDateTime;
        result += outputVersion;
        result += outputClassOtherInfo;
    }
    result += ' *';return result;
Nach dem Login kopieren

会出现如下的错误:

startup failed:
Script1.groovy: 1: expecting EOF, found 'result' @ line 1, column 1036.
   lt += outputClassOtherInfo; } result += 
                                 ^

1 error
Nach dem Login kopieren

问题3: 不知道怎么获取Override方法对应的接口方法(父类方法)

关于问题3: 实际上给这种方法加注释是没有意义的,具体可以参考:

但是如果非要加该怎么去判断.

最后可以把 缩写(abbreviation)  改成:   *

这样以后只需要输入:

/*
Nach dem Login kopieren

然后按一下 tab 键就出现结果了

哈哈!!!


Das obige ist der detaillierte Inhalt vonFortgeschrittene Kenntnisse der Ideen-Live-Vorlage, Fortgeschrittene. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!