卧槽!!IntelliJ IDEA 居然偷偷改代码。。

共 1558字,需浏览 4分钟

 ·

2022-02-21 19:10

点击关注公众号,Java干货及时送达

问题

要疯了,IDEA 居然自动修改代码?

明明我已经修改保存了,怎么测试都不行,后来我检查一看,并通过复现,发现,代码被 IDEA 自动改了。。

如下面动图所示:

本来是 类.方法,我改成了 实例.方法 调用了

原来,每次当我保存完之后,代码又复原了,太诡异了。。

这样一来,那我的实例对象不是没用到?又直接访问类的静态方法了。。

定位

看到上图,栈长突然灵机一动,这让我想起了之前分享过的《IntelliJ IDEA 2021.2 发布,这次要干掉 FindBugs 了!》这篇文章中的新功能:保存时动作,即可以在保存的时候执行代码优化操作,不用去逐一检查优化了,保存时就能做到。

更多 IDEA 教程,可以关注公众号:Java技术栈,我分享了一大堆了,关注后在菜单中就可以阅读。

如下图设置所示:

我确实开启了各项保存时动作,其中我就勾选了一个自动清理修复的选项。

然后在 Inspections 菜单中:

通过实例对象访问静态成员的警告也是打开的,意思就是不允许/不建议通过实例对象访问静态成员。

所以,我猜测可能就是保存时的清理动作触发了这条规则,然后就被自动优化了。

所以,我把它先取消勾选:

然后再测试下:

现在通过实例对象访问静态方法,再保存,实例对象不再被替换为类了,生效了,就是可以允许通过实例.静态成员这种调用方式了。

同时我也发现 Spring Boot 这个启动 run 方法也是提供了普通方法版本的,传入 args 即可,这样就不是静态调用了。

现在再把那个选项再次勾选上:

如图,它再也不会被替换为类的调用了,因为它调用的就是普通方法。

总结

IDEA 的一个小优化,确实把我折腾了一翻, IDEA 真的太智能了,有时候帮你优化了,你可能还不知道,这个确实要值得注意!!

其实通过 实例.静态成员 这种访问形式,语法上是可以的,但不建议,静态成员毫无疑问是类级别的,自然需要通过类来调用,所以,我建议那个选项也不要取消勾选,默认的就是符合正常规则的。

好了,解决了这个疑惑,现在又可以继续愉快的写代码了。。

其实 IDEA 也有开源的社区版本,收费的专业版也很容易申请到免费激活码,可以参考教程:

http://www.javastack.cn/article/2020/intellij-idea-by-open-source-project/

也可以关注公众号Java技术栈,回复:IDEA,阅读我分享过的获取正版 IDEA 激活码的教程,很多粉丝都反馈说轻松得到了,感兴趣的都可以去申请,不能太容易了。

关注我,后面栈长会继续分享 IDEA 系列教程,带你打通 IDEA 的任督二脉!

版权声明: 本文系公众号 "Java技术栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。








开工大吉!再发 10,000 个红包封面
2021 年发生的 10 件技术大事!!
23 种设计模式实战(很全)
换掉 Log4j2!tinylog 横空出世
再见单身狗!Java 创建对象的 6 种方式
劲爆!Java 协程要来了
重磅官宣:Redis 对象映射框架来了!!
推荐一款代码神器,代码量至少省一半!
程序员精通各种技术体系,45岁求职难!
Spring Boot 3.0 M1 发布,正式弃用 Java 8
Spring Boot 学习笔记,这个太全了!



关注Java技术栈看更多干货



获取 Spring Boot 实战笔记!
浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报