簡介
本篇博客主要是介紹Intellij Idea
插件中比較常用的類和方法。俗話說的好,工欲善其事,必先利其器。只有知道了類和方法的功能才能更好的去寫(此處會一直跟進補充,方便當做資料查詢,如果想繼續瞭解如何編寫插件,可跳過本章節)。如有錯誤,請在留言中指正,謝謝。 系列彙總地址
類和方法簡介
操作代碼相關
說明:此部分介紹的是插件開發中對代碼的檢測、修改、讀取等相關的類和方法
PsiIfStatement
說明:此類表示的是Java中的if語句和else if語句;
舉例說明:
//if的情況 if(a>3){ xx } //else if的情況 else if(a>3){ }
上面的內容包含兩個if語句,對其進行讀取的時候就是
PsiIfStatement
類型使用場景:
當你對代碼行進行檢測的時候,需要知道那些是if判斷的時候,可以採用以下代碼:PsiElement currentCode; if(currentCode instanceOf PsiIfStatement){ //todo 可以將currentCode當做if 語句處理了 }
PsiBlockStatement
說明:此類表示的是Java中的代碼塊語句(使用{}包裹的內容);
舉例說明:
//if的情況 if(a>3){ xx } //else if的情況 else if(a>3){ xx }
上面的這個例子和剛纔的一樣,此處’xx’的內容以及’{} ‘都是
PsiBlockStatement
內的內容.使用場景:
對於你檢測方法、if、else if、else 、while、do while時他們的代碼大都由{}包裹此時,可以先獲取PsiBlockStatement
,然後獲取其內部的代碼塊的每行代碼,從而可以獲取所需內容,代碼如下://statement 是PsiIfStatement 類型的,getThenBranch獲取if分支內容 PsiBlockStatement blockStatement = (PsiBlockStatement) statement.getThenBranch(); //獲取if內的代碼塊 PsiCodeBlock psiCodeBlock = blockStatement.getCodeBlock(); //獲取代碼塊內的內容 PsiStatement[] codes = psiCodeBlock.getStatements(); //此處codes就是代碼塊內的每行代碼了(此處注意,這裏的行不是單純的一行,應該是一句代碼,參考if語句理解)
此時你就可以根據你自身的邏輯去對代碼塊的內容做出相應的處理了。
PsiStatement
說明:此類表示的是Java中的代碼行;
舉例說明:
//這是if語句 if(a>3){ xx } //這個是普通的語句 String a="xx";
上面這是兩種不同的語句,但它們的基類都是
PsiStatement
。使用場景:
當你判斷是否是java
代碼行時,可以判斷是否是此類型(除了是代碼行以外還有其他的類型,所以可以用此判斷):PsiElement currentCode; if(currentCode instanceOf PsiStatement){ //todo 可以將currentCode當做語句處理了 }
PsiJavaToken
說明:此類表示的是
Java
中的標識,形如!=
、==
、{
、}
;使用場景:
當你判斷比較類型或者代碼塊的{
,代碼如下:PsiJavaToken psiJavaToken; //此處獲取上面標識的文字內容 String token=psiJavaToken.getText(); if("{".equals(token)){ //psiJavaToken 可以當做{ 處理 }
總結
至此已經基本瞭解了Intellij Idea
的插件的相關的類和方法,儲存下足夠的知識開啓後續的旅程吧,內容持續加入中,敬請期待~
學完了內容後,多回顧多思考,繼續後續內容。