简介
本篇博客主要是介绍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
的插件的相关的类和方法,储存下足够的知识开启后续的旅程吧,内容持续加入中,敬请期待~
学完了内容后,多回顾多思考,继续后续内容。