欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談idea live template高級知識_進階(給方法,類,js方法添加注釋)

 更新時間:2017年06月13日 08:56:55   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談idea live template高級知識_進階(給方法,類,js方法添加注釋)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

為了解決用一個命令(宏)給方法,類,js方法添加注釋,經(jīng)過幾天的研究.終于得到結(jié)果了。

實現(xiàn)的效果如下:

給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;
  }

給 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 {
}

給js 的方法添加注釋

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

現(xiàn)在把答案公布如下

Abbreviation:

cmj

Template text(注1):

**
 *$context$ 
 */

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;"))

使用如下:

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

/cmj

后 按 tab鍵(此鍵是默認(rèn)的,可以更改成其他的)

注1 和注2

也可以換成第二種方法(網(wǎng)上大部分的方法):

Template text

*
 *$context$ 
 */

跟注1比較第一行少了一個*,

因此注2就是變成了:

/*cmj

我感覺用我的方法比第二種方法好。

Edit Variable中代碼詳解

首先我分解了如下的 10幾個函數(shù)(是小函數(shù)):

// 輸出方法名
  groovyScript("def methodName = \"${_1}\"; def result = ' * @Method : ' + methodName + '\\n'; return result;", methodName())
  
  // 輸出描述
  groovyScript("def result = ' * @Description : ' + '\\n'; return result;")
  
  // 輸出參數(shù)列表的子函數(shù)
  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())
  
  // 輸出  作者的    子函數(shù) 這里可以改作者
  groovyScript("def author = 'Rush.D.Xzj'; def result = ' * @author : ' + author + '\\n'; return result;")
  
  // 輸出  返回值的  子函數(shù)
  groovyScript("def returnType = \"${_1}\"; def result = ' * @return : ' + returnType + '\\n'; return result;", methodReturnType())
  
  // 輸出  日期的   字函數(shù), 這個可以更改日期格式
  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;")

然后在主要代碼中,需要把上述的10幾個函數(shù)當(dāng)做參數(shù)供給主要代碼使用.

判斷是函數(shù),類,js函數(shù)主要是通過如下的2個內(nèi)置變量來實現(xiàn)的;

methodName()
jsMethodName()

當(dāng)methodName()不為空的時候, 生成 方法的 注釋

當(dāng)jsMethodName()不為空的時候, 生成 js方法的注釋

否則生成類的注釋

所以上述的代碼可以簡單的做如下的歸類了:

獲取相關(guān)參數(shù):

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 = '';

判斷是哪一種類型的注釋(代碼片段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;
  }

這下就可以了.就把整個這么難看(groopscript搞的?)代碼整理的比較清晰了.

我還有如下的幾個疑惑/問題需要解決, 如果有朋友能給我答案那就好了.

問題1. 不知道可以通過什么方法獲取js方法中的參數(shù)列表

問題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;

會出現(xiàn)如下的錯誤:

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

問題3:不知道怎么獲取Override方法對應(yīng)的接口方法(父類方法)

關(guān)于問題3: 實際上給這種方法加注釋是沒有意義的,具體可以參考: https://stackoverflow.com/questions/4310858/comments-on-overridden-method-in-java

但是如果非要加該怎么去判斷.

以上這篇淺談idea live template高級知識_進階(給方法,類,js方法添加注釋)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot如何讀取resources下的json配置文件

    Springboot如何讀取resources下的json配置文件

    這篇文章主要介紹了Springboot如何讀取resources下的json配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java編程中應(yīng)用的GUI設(shè)計基礎(chǔ)

    Java編程中應(yīng)用的GUI設(shè)計基礎(chǔ)

    這篇文章主要介紹了Java編程中應(yīng)用的GUI設(shè)計基礎(chǔ),為一些Java開發(fā)CS類型應(yīng)用的基礎(chǔ)概念知識,需要的朋友可以參考下
    2015-10-10
  • zookeeper節(jié)點類型詳解

    zookeeper節(jié)點類型詳解

    今天小編就為大家分享一篇關(guān)于zookeeper節(jié)點類型詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • 如何使用Spring?integration在Springboot中集成Mqtt詳解

    如何使用Spring?integration在Springboot中集成Mqtt詳解

    MQTT是多個客戶端通過一個中央服務(wù)器傳遞信息的多對多協(xié)議,能高效地將信息分發(fā)給一個或多個訂閱者,下面這篇文章主要給大家介紹了關(guān)于如何使用Spring?integration在Springboot中集成Mqtt的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • java增強for循環(huán)的實現(xiàn)方法

    java增強for循環(huán)的實現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava增強for循環(huán)的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 基于springboot2集成jpa,創(chuàng)建dao的案例

    基于springboot2集成jpa,創(chuàng)建dao的案例

    這篇文章主要介紹了基于springboot2集成jpa,創(chuàng)建dao的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java 模擬真正的并發(fā)請求詳情

    Java 模擬真正的并發(fā)請求詳情

    有時需要測試一下某個功能的并發(fā)性能,又不要想借助于其他工具,索性就自己的開發(fā)語言,來一個并發(fā)請求就最方便了。下文我們就來學(xué)習(xí)Java 如何模擬真正的并發(fā)請求
    2021-09-09
  • Java開發(fā)必備知識之?dāng)?shù)組詳解

    Java開發(fā)必備知識之?dāng)?shù)組詳解

    數(shù)組對于每一門編程語言來說都是重要的數(shù)據(jù)結(jié)構(gòu)之一,當(dāng)然不同語言對數(shù)組的實現(xiàn)及處理也不盡相同.本篇文章為大家整理了Java最全關(guān)于數(shù)組的知識點,并給出其對應(yīng)的代碼,需要的朋友可以參考下
    2021-06-06
  • Maven Assembly實戰(zhàn)教程

    Maven Assembly實戰(zhàn)教程

    MavenAssembly插件用于創(chuàng)建可分發(fā)包,如JAR、ZIP或TAR文件,通過配置pom.xml,可以生成包含所有依賴的JAR文件或自定義格式的歸檔文件,示例展示了如何使用默認(rèn)描述符和自定義描述符創(chuàng)建JAR包,以及在多模塊項目中使用Assembly插件
    2024-12-12
  • Java使用建造者模式實現(xiàn)辦理手機套餐功能詳解

    Java使用建造者模式實現(xiàn)辦理手機套餐功能詳解

    這篇文章主要介紹了Java使用建造者模式實現(xiàn)辦理手機套餐功能,較為詳細(xì)的描述了建造者模式的概念、原理并結(jié)合實例形式分析了Java使用建造者模式實現(xiàn)的辦理手機套餐功能具體步驟與相關(guān)操作注意事項,需要的朋友可以參考下
    2018-05-05

最新評論