手把手教学:用 AI 写 Java 代码,再也不怕它乱改你的文件

9 阅读6分钟

手把手教学:用 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 的反应可能是

  1. 直接在 setScore 里加了 if (score < 0) throw...
  2. 顺便“帮你优化”了 getter 方法
  3. 可能还改了其他文件
  4. 然后你发现程序跑不起来了...

✅ 正确做法:三步走

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 了,再让它动手

看完计划,你觉得没问题。这时候:

  1. Shift + Tab 退出 Plan Mode( 符号会消失)
  2. 输入:

    按照刚才的计划,开始修改吧

现在 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 出个完整方案

我需要:

  1. Student.java 里加成绩验证
  2. StudentService.java 里,如果成绩异常,记录日志
  3. 不要动 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 会立即更新计划,但不会动你的代码

⑤ 确认执行
  1. Shift + Tab 退出 Plan Mode
  2. 说:

    按修改后的计划,从 Student.java 开始改


四、新手常见问题解答

Q1:Plan Mode 能做什么?

  • ✅ 查看你的代码文件
  • ✅ 分析项目结构
  • ✅ 生成修改计划
  • ✅ 回答技术问题
  • 不能修改任何文件
  • 不能运行命令
  • 不能删除文件

Q2:怎么知道是否在 Plan Mode?

看终端光标前的提示:

  • ⏸ plan mode on:安全模式,AI 只能看
  • 什么都没有:普通模式,AI 可以改代码
  • ▶ auto-accept mode:自动模式,AI 可以直接改

Q3:Windows 没有 Shift+Tab 怎么办?

  1. 输入 /plan 进入 Plan Mode
  2. 输入 /normal 回到普通模式
  3. 输入 /auto 进入自动模式

Q4:AI 的计划太复杂,我看不懂?

可以要求简化:

你的计划太技术了,用大白话重新说一遍,我是初学者

或者分步骤:

不要一次性出完整计划,先告诉我第一步改哪个文件

Q5:怎么看 AI 的完整计划?

AI 通常会生成一个 plan.md 文件。你可以:

  1. 在 Plan Mode 输入:打开计划文件
  2. 或者用编辑器打开项目里的 plan.md

五、给你的 Java 项目加“双保险”

在你的项目根目录(有 src 文件夹的地方)新建一个文件:

mkdir .claude
echo '{
  "permissions": {
    "defaultMode": "plan"
  }
}' > .claude/settings.json

这样设置后,每次在这个项目里运行 claude都会自动进入 Plan Mode,避免你忘记打开安全模式。


六、一句话总结

用 Plan Mode,就是让 AI 当你的“实习生”

  1. 你下任务(我要加成绩验证)
  2. 实习生写方案(我打算这样改...)
  3. 你审批方案(这里改成中文,那里不要动)
  4. 实习生执行(按你批准的方案改文件)

记住这个口诀

先 /plan,看方案,
满意再让 AI 干。

这样,AI 就成了你的可控助手,而不是随机炸弹


赶紧学起来兄弟们!

打开你的 Java 项目,试试这个流程:

1. cd 你的项目目录
2. claude
3. 输入 /plan
4. 说:“看看我的项目结构,给我介绍一下”
5. 看看 AI 的“汇报”

你会发现,AI 原来可以这么“听话” 😉