首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编写一个IDEA插件之:自动生成Java代码

我很喜欢IDEA一键自动生成代码功能,例如自动生成构造方法、字段Get/Set方法、ToString方法等等,除此之外,也有一些插件提供自动生成代码功能,例如我们所熟悉GsonFormat插件...上一篇我们了解到,Java源代码编译后生成Class文件有固定结构,而在IDEA,Java源代码也同样有固定结构:PSI程序结构。...自动生成Java源代码 我们模仿IDEA提供自动生成代码功能,给右键弹出菜单Generate...菜单添加一个子菜单:GeneratedInvokePayMethod,在插件使用者点击该菜单时自动生成一串代码...由于Intellij Platform不允许插件在主线程中进行实时文件写入,只能通过异步任务来完成写入,因此,我们需要通过WriteCommandAction.runWriteCommandAction...,提供了大量API,例如创建字段createField、创建方法createMethod、创建类createClass,创建关键字createKeyword。

1.8K20

谁说 Java 不能多继承

当然这个功能也是很只因肋了,因为我想不出还有其他用法了,哭 手把手教你实现 要实现这个功能需要分别实现对应注解处理器和IDEA插件 注解处理器用于在编译时候根据注解生成对应代码 IDEA插件用于在标记注解后能够有对应提示...【目标类】,把注解上标记类叫做【来源类】,我们要将【来源类】字段和方法复制到【目标类】 我们只要拿到【来源类】语法树,就可以获得对应字段和方法然后添加到【目标类】语法树 先通过【目标类】...上标注@AutoService(Processor.class)注解就会在编译时候自动生成对应文件 到此我们注解处理器就开发完成了 我们只需要用compileOnly和annotationProcessor...引入我们包就可以啦 Intellij Plugin 虽然我们实现了注解处理器,但是IDEA上是不会有提示,这就需要另外开发IDEA插件来实现对应功能了 所以项目搭建之类我就不啰嗦了 IDEA提供了很多接口用于扩展...其中第一个参数PsiElement element就是扩展主体,以我们当前需要实现功能来说,如果这个参数是类并且类上标注了我们指定注解,那么我们就需要进行处理 第二个参数是需要类型,以我们当前需要实现功能来说

53420
您找到你想要的搜索结果了吗?
是的
没有找到

小伙伴想写个 IDEA 插件么?这些 API 了解一下!

前言 " 在看完 IDEA 插件开发简易教程后,小伙伴们是否迫不及待想自己上手整一个插件了?心里规划好了一二三,但是却不知道从哪里开始下手。下面我分享下自己整理一些常用 API。...在方法可以获取到 AnActionEvent 对象。...获取数据上下文 DataContext dataContext = e.getDataContext(); // context可以也获取到其他信息, 入参为 PlatformDataKeys 定义字段...() PsiElement操作 PsiClass和PsiField都实现了PsiElement // 删除 element.delete() // 添加元素, 向一个类添加方法, 字段等, 也可以调用...也可以 Clone Toolkit 这个插件源码,源码中有一些注释。在其他优秀插件,同样可有相关使用方法。

2.1K20

Kotlin代码检查在美团探索与实践

: 调用伴生对象静态方法 调用伴生对象实例方法 调用主类静态方法 读取主类静态字段 为了访问一个常量,而多花费调用4个方法开销,这样Kotlin代码无疑是低效。...同时为了保证开发同学代码都是经过工具检查,整个检查流程应该自动化。 再进一步考虑,Kotlin代码检查规则应该具有扩展性,方便其他使用方定制自己检查规则。...KLint实现 通过对上述3个主要方面的改造,完成了KLint插件。 ?...CI上自动检查应该是作为是否有“漏网之鱼”最后一道关卡,而问题应该暴露在代码编写过程。基于此,我们开发了Kotlin代码实时检查IDE插件。 ?...IDE插件共用一套规则,所以上面的规则编写一次,就可以同时在两个插件中使用: CI上自动检查对应检测结果html页面: ?

1.5K40

为 TheRouter 开发一个 IDEA 插件

idea 插件开发入门知识,来教你如何实现一个实际项目的功能。...如果你还不知道如何开发一个插件,建议先从这个链接查看官网相关文档 https://plugins.jetbrains.com/docs/intellij/welcome.html。...所以我做了这个用于自动跳转高效辅助插件,可以直接从路由声明处查看到哪些地方跳转到本路由,再也不用怕路由字符串满天飞了。 需要哪些功能 页面跳转 先想想需要哪些功能,首先页面跳转肯定是要有个导航。...在 idea 插件 SDK ,还有个很重要类就是 PsiElement,PSI (Program Structure Interface),指程序结构接口,主要负责解析文件、创建语法、语义代码。...在上面代码builder里面有一个重要方法是builder.setTargets(),就表示点击这个图标后要跳到哪里,上面的代码传入all 是一个PsiElement集合,如果只有一个PsiElement

23620

编写一个IDEA插件之:事件监听

"/> topic:填写事件主题,类似于消息中间件Topic,只不过这里填写是事件监听器接口类名; class:添加接口实现类名; 当我们给IDEA...因此,在projectOpened方法可注册任何其它事件监听器。...,我们已经了解什么是PSI,知道一个文件对应一个PsiFile,一个PsiFile本身也是一个PsiElement,由许多PsiElement构成,每个PsiElement也都可以有子PsiElement...其实这几篇分析也是笔者写插件过程中用到一些笔者认为非常重要知识点,当然还有很多没分享,如果要继续写,估计还可以写几篇,但看到上篇阅读量就没动力继续写下去了。...参考: intellij-platform-plugin-template项目管理监听器注册:https://sourcegraph.com/github.com/JetBrains/intellij-platform-plugin-template

2K20

编写一个IDEA插件之:使用PSI分析Java代码

PsiElement接口 Class文件结构包含字段表、属性表、方法表等,每个字段、方法也都有属性表,但在PSI,总体上只有PsiFile和PsiElement。...解析一个Java文件有上百种类型PsiElement,对于一个新手,我们如何才能快速认识对应Java代码文件每行代码都会解析生成呢?好在IDEA提供了PSI视图查看器。...如果你正在编写插件,那么IDEA会自动在“工具”菜单显示“查看PSI结构”选项,否则,我们需要修改IDEA配置文件才能在“工具”菜单中看到这个选项。 ?...PsiReference 一个PsiReference表示代码某个PsiElement链接到相应声明。...后记 笔者是通过阅读官方文档、通过PSI查看器学习了解PSI、并通过分析MybatisX这个插件源码,以及自己动手不断试错学习如何编写一个IDEA插件,这与笔者以前学习ASM操作字节码一样,都是瞎折腾

2.9K20

IntelliJ IDEA - 2022.2 正式发布!众多特性解读!

用于调整文件类型关联新通知面板 当文件错误地与纯文本显式关联时,IntelliJ IDEA 现在会通知您错误文件类型关联并建议直接从编辑器重置它,而无需您在Settings / Preferences...因此,这些数据片段具有更好可读性并且更易于编辑。您还可以使用 URL 完成并导航到测试这些位置声明。...开头值内自动插入 Web 引用功能。...改进 AWS CloudFormation 插件 我们通过更新元数据模式和改进属性完成对 AWS CloudFormation 插件进行了重新设计。...Scala 更好 Scala 3 支持 从 v2022.2 开始,IntelliJ IDEA 可以从.tasty文件读取匹配类型,正确解析它们,解析类型变量,将它们用作类型参数,支持检查,并将类型显示为文本

5.1K40

IDEA 插件找不到?看这里!那就自己敲一个!

那小伙伴你是否想亲手写一个插件,或者你是否有一些插件想法,但是找不到插件。那就自己实现一个吧!...插件效果:将 JavaBean 复制为 Json 字符串。 开发笔记 首先需要知道一些常用 API,常用 API 可以阅读官方文档或者关注公众号后面会推送,这里仅介绍一些在这里用到。...null : target; } return null; } - 从当前编辑文件里面获取到字段 将当前编辑 JavaBean 字段提取,并转换为 Map。...-> 点击 runlde 打包 右侧 Gradle -> 选择 intellij -> 点击 buildPlugin 此时在项目路径下会生成插件,把这个插件包发给小兄弟安装使用就行了。...上传到 IDEA 插件库 访问 https://plugins.jetbrains.com/ 创建账号,将插件包上传到仓库即可。当然也有其他方式,这块就没有研究了。

1.3K20

IDEA 插件开发实战

简介 IntelliJ IDEA 是一款开发工具,提供很多插件功能,比如阿里规范插件(Alibaba Java Coding Guidelines),但是随着日常业务展开,很多工作重复性编码,浪费很多时间...,需要自定义抽象出来一些插件自动方式解决问题,这也是工程师文化体现。...讯息传递 平台中可用消息传递基础结构,基于 Observer 设计模式扩展实现,通过该模式能够更好梳理一对多关系,实现提供了附加功能,例如在层次结构上进行广播和特殊嵌套事件处理(此处嵌套事件是指从另一个事件回调...代码结构会分层,类似 MVC 思想,这里面有很多可以抽象出来公共类,比如 JavaBean,DTO,Service 等等,我这个实例结合类似场景,实现自动插件。...} }); }} 八.总结 总体 IDEA 插件开发介绍完毕,这个可以基于模板快速拓展,有兴趣朋友可以尝试下,毕竟授人以鱼不如授人以渔,自动化是工程师文化一个重要体现。

2.4K50

IDEA 插件开发实战

简介 IntelliJ IDEA是一款开发工具,提供很多插件功能,比如阿里规范插件(Alibaba Java Coding Guidelines),但是随着日常业务展开,很多工作重复性编码,浪费很多时间...,需要自定义抽象出来一些插件自动方式解决问题,这也是工程师文化体现。...讯息传递 平台中可用消息传递基础结构,基于 Observer设计模式扩展实现,通过该模式能够更好梳理一对多关系,实现提供了附加功能,例如在层次结构上进行广播和特殊嵌套事件处理(此处嵌套事件是指从另一个事件回调...代码结构会分层,类似MVC思想,这里面有很多可以抽象出来公共类,比如JavaBean,DTO,Service等等,我这个实例结合类似场景,实现自动插件。...} }); } } 八.总结 总体IDEA插件开发介绍完毕,这个可以基于模板快速拓展,有兴趣朋友可以尝试下,毕竟授人以鱼不如授人以渔,自动化是工程师文化一个重要体现

35110

善用API统一描述语言提升RestAPI开发效率

由于开发API模板缺乏固定标准,因此只能在例如Wiki、纯文本编辑器、markdown编辑器编写,无法得到现代IDE语法高亮、自动补全、错误提示等特性支持,整体感觉就像是在记事本写Java。...如果后端能在API设计文档中提供样例数据,一是如果前端没有自动Mock工具的话,能节约前端生成Mock数据时间;二是能在联调前为前端提前发现一些低级错误(比如具有业务特征一些默认值处理、空值处理、字段缺失等场景...Design:其标准为OpenAPI(前身是Swagger API Spec),提供强大在线编辑功能,包括语法高亮、错误提示、自动完成、实时预览4,并且支持用户以Json、Yaml格式撰写5、导入、导出...用Swagger2优化现有工作流 减少文档编写时间: 如果后端先编写独立API设计文档,可利用Swagger在线编辑器或IDE插件自动完成等特性;yaml格式统一、简单易懂、表达能力强,较markdown...Swagger有Intellij Idea插件支持,Swagger注解则能利用现代Java IDE特性,提高输入效率;另外完善注解也方便其他开发人员进行后期维护,不需要在设计文档和代码实现来回切换查看

1.8K30

IntelliJ IDEA 2021.2 正式发布,快来看看又出了哪些神器功能

快来看看又出了哪些神器功能~ 1关键更新 新项目范围分析允许开发者在编译前跟踪整个小型或中型项目的错误,这个功能只能够在 IntelliJ IDEA Ultimate 中使用,该功能势必要干掉FindBugs...; IntelliJ IDEA 自动清理任何最后更新超过 180 天缓存和日志目录; 如果你项目缺少一个用于特定框架插件,IDE 会提醒你并提供启用它机会;IDE 会在 Toolbox App...在新项目中存储未提交更改节点现在被称为changes,而不是Default变更列表;此外,Git操作不再需要自动创建更改列表; 默认情况下,Show Diff操作在编辑器打开专用窗口; 在本地历史修订中找到文本...20Kubernetes 在IntelliJ IDEA 2021.2,引入了对别名字段完全支持,该字段属于Chartdependencies部分。Yaml (api v2)或在需求。...21其他 享受完全本地化IntelliJ IDEA界面,包括中文、韩文和日文;本地化是一个非绑定语言包插件,可以很容易地安装在IDE; Android插件升级到v4.2.0; 分解了以下插件:资源包编辑器

2.6K50

IntelliJ IDEA 2021.2 正式发布

IntelliJ IDEA 自动清理任何最后更新超过 180 天缓存和日志目录; 如果你项目缺少一个用于特定框架插件,IDE 会提醒你并提供启用它机会;IDE 会在 Toolbox App...在新项目中存储未提交更改节点现在被称为changes,而不是Default变更列表;此外,Git操作不再需要自动创建更改列表; 默认情况下,Show Diff操作在编辑器打开专用窗口; 在本地历史修订中找到文本...现在你可以定义哪些操作使服务工具窗口出现在Preferences/Settings| Tools | Database | General; 代码完成现在适用于MongoDB控制台中各种类型字段和操作符...Kubernetes(仅限IntelliJ IDEA终极版) 在IntelliJ IDEA 2021.2,引入了对别名字段完全支持,该字段属于Chartdependencies部分。...其他 享受完全本地化IntelliJ IDEA界面,包括中文、韩文和日文;本地化是一个非绑定语言包插件,可以很容易地安装在IDE; Android插件升级到v4.2.0; 分解了以下插件:资源包编辑器

3K30

IntelliJ IDEA 2023.2 主要更新了什么?(纯文本介绍版)

用户体验 随处搜索(双 ⇧ / 双班) 现在包括文本搜索功能。 现在,您可以为项目的标题分配独特颜色,并为它们上传自定义图标,从而更轻松地区分工作区项目。...现在,您可以使用下拉菜单快速选择要添加到工具栏操作。 我们更新了 设置/首选项 |插件 部分,现在包括一组建议插件,这些插件会根据您项目细节自动确定。...我们扩展了自动测试功能功能,使其与Maven,Gradle和JPS构建系统完全兼容。 版本控制系统 IntelliJ IDEA 2023.2 引入了一个选项,用于有选择地从代码块提交特定行。...在设置新 Spring 引导运行配置时, 虚拟机选项 字段为出现在 -D 旗。 Spring 配置 Bean 不再需要注释处理器,属性和 YAML 配置文件代码完成和验证可以立即使用。...数据 编辑器和查看器 设置页面具有一个新 时区 字段,用于设置时区,其中 datetime 应显示值。 我们已经在 Redshift 实现了对外部数据库和数据共享支持。

8410

IntelliJ IDEA 2023.2 正式发布,新增三大特性,十几个重大优化!!!

主要更新 AI Assistant限定访问Ultimate AI Assistant 当前具备一组由 AI 提供支持初始功能,提供集成式 AI 聊天,可以完成一些任务,例如自动编写文档注释、建议名称...用户体验 Search Everywhere(随处搜索)文本搜索 新 UI 彩色项目标题 在 Windows 和 Linux 上主工具栏重做了汉堡包菜单 在 Project(项目)视图中按修改时间对文件进行排序...运行/调试 在调试反应式应用程序时,您现在可以轻松评估Mono和Flux类型手表和局部变量值。 我们扩展了自动测试功能功能,使其与Maven、Gradle和JPS构建系统完全兼容。...在设置新Spring Boot运行配置时,VM选项字段为-D标志后出现键提供了自动完成选项。...IntelliJ IDEA捆绑Android插件现在提供Android Studio Giraffe Beta 2功能,包括支持Android Gradle插件(AGP)8.0.0。

61220

Intellij Idea实用插件

很多工具都有一个共同点,第一眼看上去总是很麻烦,让人望而生畏,却忽略掉了他能带来效率提升,比如:Intellij数据库连接功能,我用intellij快两年了,今天才第一次使用… 所以今天趁着周末,...当你创建完数据库表格后,根据你数据库表格,自动生成对应model类以及mapper接口. 使用方式有许多种,比如通过maven引入插件,点击这里查看详情....遇到问题可以查看官方教程,点击这里哦 遇到问题可以查看官方教程. 2.gsonformat 日程工作,会有许多根据JSON文本来生成POJO场景,最典型就是接入第三方接口....1.首先下载安装,在intellij插件搜索即可. 2.新建一个实体类,类名取自己想取类名,如:Human. ?...3.在属性位置按快捷键command+n或者邮件鼠标点击generate,点击gsonformat. 4.之后将你json文本copy到输入框. ?

1.1K40

IntelliJ IDEA 2022 for Mac(最好用Java开发工具)v2022.2.2文激活版

IntelliJ IDEA整合了开发过程实用众多功能,几乎可以不用鼠标可以方便完成你要做任何事情,最大程度加快开发速度。...,强大静态代码分析和符合人体工程学设计使得开发不仅具有高效性,而且还具有令人愉快体验。...智能代码完成虽然基本完成建议可见范围内类,方法,字段和关键字名称,但智能完成仅建议当前上下文中预期那些类型。...生产力提升者IDE可以预测您需求并自动完成繁琐且重复开发任务,因此您可以专注于全局。开发人员工效学在我们制定每个设计和实施决策,我们都要记住中断开发人员流程风险,并尽最大努力消除或最小化它。...不引人注目的情报IntelliJ IDEA编码辅助不仅仅是编辑器:它还可以帮助您在处理其他部分时保持高效:例如填充字段,搜索元素列表; 访问工具窗口; 或切换设置等

24030

JetBrains IntelliJ IDEA 2021 Mac中文无限试用版(Java开发工具)

IntelliJ IDEA整合了开发过程实用众多功能,几乎可以不用鼠标可以方便完成你要做任何事情,最大程度加快开发速度。...,强大静态代码分析和符合人体工程学设计使得开发不仅具有高效性,而且还具有令人愉快体验。...智能代码完成虽然基本完成建议可见范围内类,方法,字段和关键字名称,但智能完成仅建议当前上下文中预期那些类型。...生产力提升者IDE可以预测您需求并自动完成繁琐且重复开发任务,因此您可以专注于全局。开发人员工效学在我们制定每个设计和实施决策,我们都要记住中断开发人员流程风险,并尽最大努力消除或最小化它。...不引人注目的情报IntelliJ IDEA编码辅助不仅仅是编辑器:它还可以帮助您在处理其他部分时保持高效:例如填充字段,搜索元素列表; 访问工具窗口; 或切换设置等

44320

JetBrains IntelliJ IDEA 2021 Mac(Java开发工具)中文版

IntelliJ IDEA整合了开发过程实用众多功能,几乎可以不用鼠标可以方便完成你要做任何事情,最大程度加快开发速度。...图片JetBrains IntelliJ IDEA 2021 mac功能介绍高效JAVAIntelliJ IDEA每个方面都专门设计用于最大限度地提高开发人员工作效率,强大静态代码分析和符合人体工程学设计使得开发不仅具有高效性...智能代码完成虽然基本完成建议可见范围内类,方法,字段和关键字名称,但智能完成仅建议当前上下文中预期那些类型。...生产力提升者IDE可以预测您需求并自动完成繁琐且重复开发任务,因此您可以专注于全局。开发人员工效学在我们制定每个设计和实施决策,我们都要记住中断开发人员流程风险,并尽最大努力消除或最小化它。...不引人注目的情报IntelliJ IDEA编码辅助不仅仅是编辑器:它还可以帮助您在处理其他部分时保持高效:例如填充字段,搜索元素列表; 访问工具窗口; 或切换设置等

35510
领券