
哈喽,大家好,我是Yann。
你是不是觉得,只要装了十几个插件,换个酷炫的暗黑主题,自己就是个合格的键盘侠了?
醒醒。90% 的人只是把每年几千块钱的 IntelliJ IDEA,用成了大号的 Notepad++。
今天不聊虚的,直接掏干货。这 9 个深藏功与名的 IDEA 原生黑科技,掌握它们,你的日常 CRUD 将如德芙般丝滑,每天准点打卡下班不是梦。
一、 告别狂按 F9:条件断点(Conditional Breakpoints)
痛点: 循环里有 1000 个 User,你想看 id = 9527 那个对象的数据。于是你设了个断点,疯狂按 F9,按到手指抽筋,结果一不小心按过头了……重头再来。
极客解法: 给断点加个 If 判断。
// 场景:在海量数据中精准捕捉目标异常对象
List<User> userList = userService.fetchMassiveUsers();
for (User user : userList) {
// 💡 菜鸟操作:在这里打红点,然后手动狂按 F9
// 🚀 老鸟操作:右键点击左侧红点 -> 在 Condition 框输入:user.getId().equals(9527L)
// 运行 Debug,IDEA 只有在满足该条件时,才会精准停住!
processUserData(user);
}
二、 后缀补全(Postfix Completion):思路不再被代码打断
痛点: 写代码时,经常是先写了变量,才想起来要打印它,或者要加个判空。于是你的光标只能无奈地退回行首,敲下 if,再跳回行尾补括号。反人类!
极客解法: 顺着思维逻辑写,让 IDEA 帮你倒装。
user.sout | System.out.println(user); | |
userList.fori | for (int i = 0; i < userList.size(); i++) {...} | |
user.name.nn | if (user.name != null) {...} |
三、 语言注入(Language Injection):字符串里写 SQL 也能提示?
痛点: 在 Java 的 String 里手写 JSON 或者复杂的 SQL,没有高亮,没有提示,少个引号或者逗号,运行后直接报错 500。
极客解法: 告诉 IDEA,这段字符串不是普通文本,它是 SQL/JSON。
// 🚀 骚操作:把光标放在双引号里面 -> 按 Alt + Enter -> 选择 "Inject language or reference" -> 输入 JSON
@Language("JSON") // 注入后,IDEA 会自动加上这个注解(或者在后台标记)
String mockJson = "{\n" +
" \"name\": \"Yann\",\n" +
" \"role\": \"全栈开发\",\n" +
" \"skills\": [\"Java\", \"Spring Boot\", \"Vue\"]\n" +
"}";
// 此时在这个字符串里写 JSON,不仅有语法高亮,还能享受自动格式化和错误检查!
四、 多行编辑(Multicursor):别再一行行改配置了
痛点: 拿到一个有 20 个字段的 JSON,想把所有 Key 的双引号去掉,或者要把一堆变量名统一加个前缀。
极客解法: 使用快捷键 [Alt + J] (Win) / [Ctrl + G] (Mac)。选中一个单词,按这个快捷键,IDEA 会自动选中下一个同名单词并开启光标。
五、 这种 Bug 也能调?:回退执行(Drop Frame)
痛点: 调试时点得太快,一不小心跳过了关键的方法,只能点击“重跑”,再走一遍漫长的项目启动流程。
极客解法: 在 Debug 窗口的堆栈上,右键点击方法名,选择 Drop Frame。它能把当前执行的堆栈帧“扔掉”,让程序指针回到方法被调用前的那一刻。
六、 Stream 流调试器:让函数式编程不再是黑盒
痛点: Java 8 之后的 Stream 写起来很爽,但调起来是地狱。一串 filter().map().collect(),中间哪一步过滤掉了数据?根本看不见。
极客解法: 在 Stream 这一行打断点,进入 Debug 模式后,点击调试面板上的 "Trace Current Stream Chain" 图标。
七、 临时草稿文件(Scratch Files):拒绝污染项目代码
痛点: 突然想写个 JSON 解析测试,或者想随手写段乱七八糟的 SQL 找找感觉,难道要去 test 目录下新建一个 .java 文件?事后还得删,麻烦。
极客解法: 敲击 [Ctrl + Shift + Alt + Insert] 创建一个 Scratch File。它不属于任何项目,保存在 IDEA 的缓存里,却支持完整的语法高亮、代码补全甚至直接运行。
八、 寻找消失的逻辑:本地历史(Local History)
痛点: 刚才那段代码写得挺好,手贱删了,偏偏还没提交 Git,Ctrl + Z 也撤不回来了。心态直接炸裂。
极客解法: 右键文件夹或文件 -> Local History -> Show History。IDEA 默默记录了你过去几小时甚至几天的每一次改动,精确到分钟。
九、 结构化搜索(Structural Search):代码级的“正则”
痛点: 想在几万行代码里找到所有“没有加 Logging 的 try-catch 块”,普通的全局搜索(Ctrl+F)直接废掉。
极客解法: 打开 Edit -> Find -> Search Structurally。你可以定义一个代码模板,比如 try { $Statements$ } catch($Exception$ $Ex$) { },让 catch 块内容为空。IDEA 会帮你把全项目所有这种“空异常捕获”全部揪出来。
夜雨聆风