一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 強大的 IDEA 代碼生成器,學會用,真香!

強大的 IDEA 代碼生成器,學會用,真香!

2020-10-20 23:44搜云庫技術團隊 Java教程

Java 開發過程經常需要編寫有固定格式的代碼,例如說聲明一個私有變量,logger或者bean等等。

 前言

Java 開發過程經常需要編寫有固定格式的代碼,例如說聲明一個私有變量,logger或者bean等等。對于這種小范圍的代碼生成,我們可以利用 IDEA 提供的 Live Templates功能。剛開始覺得它只是一個簡單的Code Snippet,后來發現它支持變量函數配置,可以支持很復雜的代碼生成。下面我來介紹一下Live Templates的用法。

強大的 IDEA 代碼生成器,學會用,真香!

基本使用

IDEA 自帶很多常用的動態模板,在 Java 代碼中輸入fori,回車就會出現

for ( int i = 0 ; i < ; i++) { 

 

強大的 IDEA 代碼生成器,學會用,真香!

按Tab可以在各個空白處跳轉,手動填值。

自定義 Template

官方自帶模板畢竟不能滿足我們個人編碼風格的需要,Live Templates提供了變量函數的方式供我們自定義。

簡單用法

新增自定義模板,首先需要填寫觸發單詞(即 Abbreviation),描述是可選的,然后定義模板的上下文,點擊define選擇Java,這樣在編輯 Java 的時候就會觸發當前模板,定義完上下文之后,就可以填寫模板了。

強大的 IDEA 代碼生成器,學會用,真香!

下面列舉幾個我常用的簡單模板

========== 

 

<out> 

 

---------- 

 

System.out.println($END$) 

 

========== 

 

<pfs> 

 

---------- 

 

privatefinalstatic String $varName$ = "$var$" ;` 

 

========== 

 

<privateField> 

 

---------- 

 

/** 

 

* $COMMENT$ 

 

@Getter 

 

@Setter 

 

private $TYPE$ $NAME$; 

 

========== 

 

<main> 

 

---------- 

 

public static void main (String[] args) { 

 

$END$ 

 

 

========== 

模板支持變量的定義,使用$$包圍的字符表示一個變量。是一個特殊的預定義變量,表示光標最后跳轉的位置。每個變量的位置都可以跳轉過去。

高級用法

如果你用過 vim 的Code Sinppet插件,你會發現模板里面是可以執行函數的,強大的 Live Templates當然也支持,而且 IDEA 能夠感知代碼的語義,例如說當前編輯的函數的參數。但這一點就能夠讓我們玩出花來。我們從易到難來研究模板函數的功能。

強大的 IDEA 代碼生成器,學會用,真香!

前面我們提到的變量可以綁定函數,配置方式如上圖所示。

快速聲明變量

聲明變量是一個常用的操作,特別是需要聲明變量需要加注解,注釋的時候,這些代碼寫起來就很枯燥。下面是我定義的模板:

<osgiRef> 

 

---------- 

 

/** 

 

* $END$ 

 

@OsgiReference 

 

@Setter 

 

private $TYPE$ $NAME$; 

乍一看這個模板跟我上面定義的privateField差不多,唯一的不同在于我給這些變量綁定了函數。

1.clipboard():返回當前粘貼板的字符串

2.decapitalize():將輸入的字符串首字母變為小寫

下面我們演示一下,我們先拷貝當前類名,然后輸入osgiRef

強大的 IDEA 代碼生成器,學會用,真香!

快速聲明 logger

聲明 logger 也是一個常用的操作,上面我們是利用了粘貼函數來快速聲明變量,現在我們來利用另一個函數className(),顧名思義,它的作用就是返回當前類名。

<logger> 

 

---------- 

 

/** logger */ 

 

privatestaticfinal Logger LOGGER = LoggerFactory.getLogger($CLASS$.class); 

強大的 IDEA 代碼生成器,學會用,真香!

最強大的 groovyScript()

如果說上面用到的函數提供的能力有限,不夠靈活,那么groovyScript()提供了一切你想要的能力,它支持執行 Groovy 腳本處理輸入,然后輸出處理后的字符串。

groovyScript( "code" , ...) 

 

| code | 一段Groovy代碼或者Groovy腳本代碼絕對路徑 | 

 

| ... | 可選入參,這些參數會綁定到`_1, _2, _3, ..._n`, 在 Groovy 代碼中使用。| 

下面我們來看一下它的實際應用。

快速 bean 配置

新增一個服務都要在 Spring 中注冊一個 bean,一般這個配置無非就是將指明id和class,由于我們是在 xml 中配置,所以不能利用className()函數,但是我們可以利用clipboard()函數獲取到類的全引用,在 IDEA 中我們直接右鍵類名,點擊Copy Reference就行。然后執行 groovy 腳本獲取類名。

<bean> 

 

---------- 

 

<bean id= "$id$" class = "$REF$" /> 

id綁定decapitalize(groovyScript("_1.tokenize('.')[-1]", clipboard())),首先取clipboard()的值得到類的全引用,然后執行 groovy 代碼_1.tokenize('.')[-1](按.分割為字符串數組,然后取最后一個即可得到類名,然后用decapitalize()將首字母小寫即可得到id。

強大的 IDEA 代碼生成器,學會用,真香!

快速打印當前上下文信息

打印錯誤日志的時候需要打印當前上下文信息的,例如說入參,有時候入參很多的時候,寫起來很痛苦,好在有模板函數methodParameters(),返回當前函數參數的列表,當然這個列表我們不能直接使用,需要結合groovyScript對它進行轉化。

<printContext> 

 

--------------- 

 

LogUtil.$TYPE$(LOGGER, "$MSG$ " + $params$); 

將params綁定到groovyScript("'"' + _1.collect { it + ' = [" + ' + it + ' + "]'}.join(', ') + '"'", methodParameters()),就能夠自動將當前函數的參數格式化后輸出

強大的 IDEA 代碼生成器,學會用,真香!

總結

上面我們簡單介紹了常用的模板函數,其實 IDEA 還有很多其它模板函數,具體參考Creating and Editing Template Variables

(https://www.jetbrains.com/help/idea/2016.3/creating-and-editing-template-variables.html)。

IDEA 是一個很強大的工具,善用工具能夠極大的提高工作效率,將精力投入到關鍵的事情上,而不是將時間浪費在編寫重復代碼上面。一些更高級的用法還有待大家去發掘。最后推廣一波代碼生成插件CodeMaker(https://github.com/x-hansong/CodeMaker),好好利用也能節省很多重復編寫代碼的時間。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 91精品久久国产青草 | 男人的j进入女人的j免费 | 国产a一级毛片午夜剧院 | 无限好资源第一片免费韩国 | 欧式午夜理伦三级在线观看 | 青青草在视线频久久 | 日比免费视频 | 亚洲大逼 | 能播放的欧美同性videos | 果冻传媒天美传媒网址入口 | 精品午夜久久网成年网 | 特黄特a级特别特级特毛片 特黄a级三级三级野战 | 欧美又大又粗又爽视频 | 日韩在线免费播放 | blacked黑人| 香蕉免费看一区二区三区 | 久久嫩草影院网站 | 91高清国产视频 | 色聚网久久综合 | 亚洲第一区欧美日韩精品 | 2023最新伦理片 | 91麻豆精品国产片在线观看 | aaa免费看| 五月最新商场女厕所高跟嘘嘘 | 欧美国产高清 | 亚洲国产精品一区二区久久 | 四虎影音| 98在线视频噜噜噜国产 | 末代皇帝无删减版在线观看 | 婷婷99av综合 | 免费观看一级一片 | 天天做天天爱天天爽综合网 | 狠狠的撞进去嗯啊h女强男视频 | 免费午夜影片在线观看影院 | 亚洲黄色三级视频 | 国内精品麻豆 | kuaibo成人播放器 | 欧美专区在线播放 | 麻豆网站视频国产在线观看 | 亚洲精品二三区伊人久久 | 精品国产免费第一区二区三区日韩 |