第一章:初识注解 - 代码世界的便利贴
文章目录
一、程序员的"纸条困境":没有注解的黑暗时代
场景还原(2005年某个深夜):
我盯着眼前这段祖传代码,光标在密密麻麻的//TODO
和//FIXME
之间跳跃。屏幕上泛着CRT显示器特有的蓝光,键盘缝隙里还卡着昨天加班时掉落的饼干渣:
public class OrderService {
// 重要!必须校验用户权限(但所有人都假装没看见)
public void createOrder(Order order) {
// TODO: 添加事务控制(三年后依然未实现)
// FIXME: 性能太差需要优化(后来者不敢动)
// 真实的业务逻辑
System.out.println("订单创建成功");
}
}
问题爆发时刻:当新同事小王试图"优化"这段代码时,他:
- 删掉了"性能差"的代码段(以为是垃圾代码)
- 导致线上订单金额计算错误
- 最终引发了一场凌晨三点的紧急回滚
二、注解的诞生:从人工纸条到智能标签
2.1 官方定义的冰冷解释 vs 老码农的通俗理解
教科书说:
“注解是一种元数据,它提供关于程序的数据,但对程序的执行没有直接影响”
老码农说:
"注解就是给代码贴智能标签,让:
- 编译器知道要检查什么
- 框架知道该做什么
- 同事知道要注意什么"
2.2 注解的三大核心价值
// 价值1:机器可读的规范(防手残)
@Override // ← 编译器:我会检查你有没有正确覆盖父类方法
void onButtonClick() {
...}
// 价值2:文档的活字典(防遗忘)
@Deprecated(since =