手把手教学:用 AI 写 Java 代码,再也不怕它乱改你的文件
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!
你有没有这样的经历:让 AI 帮忙改个 Java 类,结果它把你的项目搞乱了,还得自己一点点恢复?
别急,今天教你一个必杀技:让 AI 在改动你的代码前,必须先向你“汇报计划”,你同意了它才能动手。
一、先看个真实场景
假设你正在开发一个学生管理系统,有这样一个 Student.java:
public class Student {
private String name;
private int score; // 学生成绩
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getScore() { return score; }
public void setScore(int score) { this.score = score; }
}
你现在想:“成绩不能是负数,得加个验证”。
❌ 错误做法(很多人中招)
在终端里直接:
claude
然后说:
帮我加个验证,成绩不能小于0
AI 的反应可能是:
- 直接在
setScore里加了if (score < 0) throw... - 顺便“帮你优化”了 getter 方法
- 可能还改了其他文件
- 然后你发现程序跑不起来了...
✅ 正确做法:三步走
Spring Cloud全栈实战:手撸企业级项目,从入门到架构师!
第 1 步:进入“安全模式”
打开终端,进入你的项目文件夹:
cd ~/java-projects/student-system
输入:
claude
关键操作:看到终端出现 ? 时,输入:
/plan
或者按 两次 Shift + Tab 键。
你会看到状态变成了:
⏸ plan mode on
?
这个 ⏸ 符号就是你的“护身符”,表示 AI 现在只能看,不能改。
第 2 步:让 AI 先“说说打算怎么改”
在 Plan Mode 下输入:
我想在 Student 类里加个验证,成绩不能小于0,也不能大于100。如果成绩不对,就抛个异常。
先给我个计划,告诉我你要改哪些地方。
AI 会这样“汇报”:
## 我的计划
1. **修改的文件**:
- Student.java
2. **具体要改的内容**:
- 在 setScore 方法里加判断:
```java
public void setScore(int score) {
if (score < 0 || score > 100) {
throw new IllegalArgumentException("成绩必须在0-100之间");
}
this.score = score;
}
```
3. **可能的影响**:
- 如果其他地方调用 setScore(-5) 会报错
- 需要检查是否有代码传了负数
4. **建议的测试**:
- 测试正常成绩(80)
- 测试边界值(0, 100)
- 测试错误成绩(-1, 101)
看懂了吗? AI 在“纸上谈兵”,把它的想法完整告诉你,但没有真正改动你的代码。
第 3 步:你觉得 OK 了,再让它动手
看完计划,你觉得没问题。这时候:
- 按
Shift + Tab退出 Plan Mode(⏸符号会消失) - 输入:
按照刚才的计划,开始修改吧
现在 AI 才会真正去改你的 Student.java。
二、为什么要这么麻烦?
对比一下:
| 情况 | 直接让 AI 改 | 用 Plan Mode |
|---|---|---|
| 控制权 | AI 想怎么改就怎么改 | 你先审批,再让 AI 执行 |
| 安全性 | 可能把好代码改坏 | 先看到计划,不满意可以改 |
| 理解度 | 不知道 AI 改了哪里 | 清清楚楚看到要改什么 |
| 后悔药 | 改坏了得自己恢复 | 计划阶段可以随便调整 |
就像装修房子:
- ❌ 直接给钥匙:工人想怎么装就怎么装
- ✅ 先看设计图:你先确认,再开工
三、实际应用:一次改多个文件
场景升级
现在你的项目有 3 个文件:
Student.java(学生类)StudentService.java(处理学生逻辑)StudentController.java(接收用户请求)
你想:“成绩验证后,还要在 Service 里记录日志”。
Plan Mode 操作流程
① 进入安全模式
cd ~/your-project
claude
/plan
② 让 AI 出个完整方案
我需要:
- Student.java 里加成绩验证
- StudentService.java 里,如果成绩异常,记录日志
- 不要动 Controller
给我个详细的计划,包括每个文件怎么改、改哪里、会不会影响现有功能。
③ AI 的“施工图”大概长这样:
## 三文件修改计划
### 文件1:Student.java
- 修改位置:第15-20行
- 修改内容:在 setScore 方法加 if 判断
- 影响:会影响所有调用 setScore 的地方
### 文件2:StudentService.java
- 修改位置:saveStudent 方法
- 修改内容:try-catch 捕获异常,用 log.info 记录日志
- 注意:需要先导入 import lombok.extern.slf4j.Slf4j;
### 文件3:不需要修改的文件
- StudentController.java:保持原样
- 原因:Controller 调用 Service,Service 已经处理异常
④ 你觉得“记录日志”用中文更好
可以直接告诉 AI:
计划里,日志信息用中文,比如“学生成绩异常:-5分”
AI 会立即更新计划,但不会动你的代码。
⑤ 确认执行
- 按
Shift + Tab退出 Plan Mode - 说:
按修改后的计划,从 Student.java 开始改
四、新手常见问题解答
Q1:Plan Mode 能做什么?
- ✅ 查看你的代码文件
- ✅ 分析项目结构
- ✅ 生成修改计划
- ✅ 回答技术问题
- ❌ 不能修改任何文件
- ❌ 不能运行命令
- ❌ 不能删除文件
Q2:怎么知道是否在 Plan Mode?
看终端光标前的提示:
⏸ plan mode on:安全模式,AI 只能看- 什么都没有:普通模式,AI 可以改代码
▶ auto-accept mode:自动模式,AI 可以直接改
Q3:Windows 没有 Shift+Tab 怎么办?
- 输入
/plan进入 Plan Mode - 输入
/normal回到普通模式 - 输入
/auto进入自动模式
Q4:AI 的计划太复杂,我看不懂?
可以要求简化:
你的计划太技术了,用大白话重新说一遍,我是初学者
或者分步骤:
不要一次性出完整计划,先告诉我第一步改哪个文件
Q5:怎么看 AI 的完整计划?
AI 通常会生成一个 plan.md 文件。你可以:
- 在 Plan Mode 输入:
打开计划文件 - 或者用编辑器打开项目里的
plan.md
五、给你的 Java 项目加“双保险”
在你的项目根目录(有 src 文件夹的地方)新建一个文件:
mkdir .claude
echo '{
"permissions": {
"defaultMode": "plan"
}
}' > .claude/settings.json
这样设置后,每次在这个项目里运行 claude,都会自动进入 Plan Mode,避免你忘记打开安全模式。
六、一句话总结
用 Plan Mode,就是让 AI 当你的“实习生”:
- 你下任务(我要加成绩验证)
- 实习生写方案(我打算这样改...)
- 你审批方案(这里改成中文,那里不要动)
- 实习生执行(按你批准的方案改文件)
记住这个口诀:
先 /plan,看方案,
满意再让 AI 干。
这样,AI 就成了你的可控助手,而不是随机炸弹。
赶紧学起来兄弟们!
打开你的 Java 项目,试试这个流程:
1. cd 你的项目目录
2. claude
3. 输入 /plan
4. 说:“看看我的项目结构,给我介绍一下”
5. 看看 AI 的“汇报”
你会发现,AI 原来可以这么“听话” 😉