当前位置: 首页 > news >正文

Java常用注解通俗解释

注解就像是给Java代码贴的"便利贴",它们不会改变代码本身的逻辑,但能给编译器、开发工具或运行时环境提供额外信息。下面我用最通俗的方式解释Java中最常用的注解:

一、基础篇:人人必知的注解

1. `@Override` - "我是重写的!"
   • 贴在方法上,告诉编译器:"这个方法是我从爸爸类(父类)那里继承来后改写的"

   • 如果实际上没重写任何方法,编译器会报错提醒你

   • 例子:

     ```java
     @Override
     public String toString() { return "我是重写过的toString"; }
     ```

2. `@Deprecated` - "过时了,别用了!"
   • 贴在类、方法或字段上,相当于挂个"即将停用"的牌子

   • 用了带这个标记的代码,编译器会给出警告

   • 例子:

     ```java
     @Deprecated
     public void oldMethod() { ... } // 这个方法以后要淘汰了
     ```

3. `@SuppressWarnings` - "别吵,我知道有问题!"
   • 让编译器"闭嘴",不要显示某些警告

   • 常用参数:`"unchecked"`(忽略泛型警告)、`"deprecation"`(忽略过时API警告)

   • 例子:

     ```java
     @SuppressWarnings("unchecked")
     List list = new ArrayList(); // 我知道没写泛型,别提醒我了
     ```

二、框架篇:Spring家族常用注解

4. `@Controller` / `@Service` / `@Repository` - "我是特种兵!"
   • Spring给不同角色的类贴的标签:

     ◦ `@Controller`:处理网页请求的"门卫"

     ◦ `@Service`:处理业务的"服务员"

     ◦ `@Repository`:管数据库的"仓库管理员"

   • 例子:

     ```java
     @Controller
     public class UserController { ... } // 我是处理用户请求的
     ```

5. `@Autowired` - "快给我找个合适的来!"
   • 贴在字段或构造方法上,相当于说:"Spring大哥,帮我自动找个合适的对象塞进来"

   • 例子:

     ```java
     @Autowired
     private UserService userService; // 随便给我个UserService就行
     ```

6. `@RequestMapping` - "找我请按门牌号!"
   • 贴在Controller类或方法上,定义访问路径

   • 例子:

     ```java
     @RequestMapping("/user")
     public class UserController {
         @RequestMapping("/list")
         public String list() { ... } // 访问路径是 /user/list
     }
     ```

三、偷懒神器:Lombok注解

7. `@Getter` / `@Setter` - "别写get/set方法了!"
   • 自动生成字段的getter和setter方法

   • 例子:

     ```java
     @Getter @Setter
     public class User {
         private String name; // 自动生成getName()和setName()
     }
     ```

8. `@Data` - "全家桶套餐!"
   • 一次性包含`@Getter`、`@Setter`、`@ToString`、`@EqualsAndHashCode`等

   • 例子:

     ```java
     @Data
     public class User {
         private String name;
         private int age; // 自动生成所有常用方法
     }
     ```

9. `@Builder` - "链式构造了解一下!"
   • 自动生成建造者模式的代码

   • 例子:

     ```java
     @Builder
     public class User {
         private String name;
         private int age;
     }
     // 使用:User.builder().name("张三").age(20).build();
     ```

四、测试篇:JUnit注解

10. `@Test` - "我是测试用例!"
    ◦ 标记这是一个测试方法

    ◦ 例子:

      ```java
      @Test
      public void testAdd() {
          assertEquals(3, 1+2); // 测试1+2是否等于3
      }
      ```

11. `@Before` / `@After` - "测试前后我要做点事!"
    ◦ `@Before`:每个测试方法执行前先执行我

    ◦ `@After`:每个测试方法执行后要执行我

    ◦ 例子:

      ```java
      @Before
      public void setUp() { System.out.println("测试要开始了"); }
      
      @After 
      public void tearDown() { System.out.println("测试结束了"); }
      ```

五、数据库篇:JPA/Hibernate注解

12. `@Entity` - "我是数据库表!"
    ◦ 标记这个类对应数据库中的一张表

    ◦ 例子:

      ```java
      @Entity
      public class User { ... } // 对应数据库user表
      ```

13. `@Id` - "我是主键!"
    ◦ 标记这个字段是表的主键

    ◦ 例子:

      ```java
      @Id
      private Long id; // 这是主键字段
      ```

14. `@Column` - "我是表字段!"
    ◦ 标记字段对应表的列,可以指定列名等属性

    ◦ 例子:

      ```java
      @Column(name = "user_name")
      private String name; // 对应user_name列
      ```

总结:注解就像便利贴

• 给编译器看的:如`@Override`、`@Deprecated`

• 给框架看的:如Spring的`@Controller`、JPA的`@Entity`

• 给工具看的:如Lombok的各种注解

• 给测试工具看的:如JUnit的各种注解


记住:注解本身不做任何事情,它们只是提供信息,真正干活的是读取这些注解的处理器或框架!

相关文章:

  • 【计算机视觉】目标检测:深度解析YOLOv5:下一代实时目标检测框架实战指南
  • UniApp 小程序嵌套 H5 页面显示隐藏监听实践
  • CentOS NFS共享目录
  • 关于3D的一些基础知识
  • Objective-C Block 底层原理深度解析
  • WEBSTORM前端 —— 第2章:CSS —— 第4节:盒子模型
  • phpstudy修改Apache端口号
  • (开源)视频画面增强模型:Ev-DeblurVSR (可以解决视频画面不清晰的问题)
  • C++之类和对象:构造函数,析构函数,拷贝构造,赋值运算符重载
  • 从Transformer原理角度来看,prompt设置输出字数限制会生效的原因
  • 8.idea创建maven项目(使用Log4j日志记录框架+Log4j 介绍)
  • Java后端程序员学习前端之html
  • 关于浏览器对于HTML实体编码,urlencode,Unicode解析
  • gem5-gpu 安装过程碰到的问题记录 关于使用 Ruby + Garnet
  • RabbitMQ 启动报错 “crypto.app“ 的解决方法
  • 余额分账和代付有什么区别?
  • AVL树左旋右旋的实现
  • Error: error:0308010C:digital envelope routines::unsupported 高版本node启动低版本项目运行报错
  • Android启动应用时屏蔽RecyclerView滑动,延时后再允许滑动,Kotlin
  • 【免费下载】1985-2023年全国土地利用数据
  • 网站数据库修改密码要怎么做/广告推广营销网站
  • 网站规划书市场分析/网络销售都是诈骗公司吗
  • 个人可以做几个网站吗/企业营销策划书范文
  • 电子商务网站建设的主页/网络推广的具体方式
  • 政府网站开发/关键词挖掘工具免费
  • 怎么查到代码是哪个网站做的/龙岗网站建设公司