Java中Lombok常用注解有哪些

其他教程   发布日期:2025年03月28日   浏览次数:79

今天小编给大家分享一下Java中Lombok常用注解有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

安装Lombok

加入Maven依赖

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <optional>true</optional>
  5. </dependency>

IDEA中安装Lombok插件

依次点击:FIle-Settings-Plugins,从插件栏中搜索Lombok进行安装,安装之后勾选Lombok启动即可。

注解介绍

@Getter和@Setter

放在类上,为该类的所有属性自动生成Getter和Setter方法

  1. import lombok.Getter;
  2. import lombok.Setter;
  3. /**
  4. * @program: our-task
  5. * @description: 学生类
  6. * @author: water76016
  7. * @create: 2020-12-15 10:57
  8. **/
  9. @Getter
  10. @Setter
  11. public class Student {
  12. int id;
  13. String name;
  14. int age;
  15. }

@ToString

自动重写toString方法,和我们平时使用IDEA编辑器自动生成的一样

  1. /**
  2. * @program: our-task
  3. * @description: 学生类
  4. * @author: water76016
  5. * @create: 2020-12-15 10:57
  6. **/
  7. @ToString
  8. public class Student {
  9. int id;
  10. String name;
  11. int age;
  12. }

@EqualsAndHashCode

自动生成equal(Object other)和hashCode()方法,如果某些变量不想要加入该注解,可以使用exclude进行排除

  1. import lombok.EqualsAndHashCode;
  2. @EqualsAndHashCode
  3. public class Student {
  4. int id;
  5. String name;
  6. int age;
  7. }
  1. import lombok.EqualsAndHashCode;
  2. //把name属性排除在外
  3. @EqualsAndHashCode(exclude = "name")
  4. public class Student {
  5. int id;
  6. String name;
  7. int age;
  8. }

问:为什么把生成equal(Object other)和hashCode()方法弄成一个注解,而不是分开使用?

答:在Java中有规定:当两个对象相等时,它们的hashcode是一定相等的。但是,当两个对象的hashcode相同,对象不一定相等。这样做是为了防止违反Java规定的情况发生。

@NoArgsConstructor

生成一个不包含任何参数的无参构造器

  1. import lombok.NoArgsConstructor;
  2. @NoArgsConstructor
  3. public class Student {
  4. int id;
  5. String name;
  6. int age;
  7. }

@AllArgsConstructor

生成一个包含所有参数的构造器

  1. import lombok.AllArgsConstructor;
  2. @AllArgsConstructor
  3. public class Student {
  4. int id;
  5. String name;
  6. int age;
  7. }

@RequiredArgsConstructor

为“特定参数”生成构造器,这里的“特定参数”,特指那些加上final修饰词的属性

  1. import lombok.RequiredArgsConstructor;
  2. @RequiredArgsConstructor
  3. public class Student {
  4. int id;
  5. final String name;
  6. int age;
  7. public static void main(String[] args) {
  8. Student student = new Student("33");
  9. }
  10. }

这里我们只为name加上final修饰,可以发现,我们只生成了一个包含name属性的构造器。另外,如果所有的属性都没有final修饰的话,使用@RequiredArgsConstructor会生成一个无参的构造器。

@Data

这是一个组合注解,加了这个注解,相当于加入了@Getter、@Setter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor这五个注解。

@Value

这也是一个组合注解,但是会把所有的变量都设置为final的,其他的就和@Data一样了。等同于加入了@Getter、@ToString、@EqualsAndHashCode和@RequiredArgsConstructor这四个注解(由于所有属性是final的,所以没有@setter注解了)。

@Builder

流式的set值写法,不过毕竟是给属性赋值,基本的setter还是需要有的,一般来说,@Builder会和@Data一起使用。

  1. import lombok.Builder;
  2. import lombok.Data;
  3. @Builder
  4. @Data
  5. public class Student {
  6. int id;
  7. String name;
  8. int age;
  9. public static void main(String[] args) {
  10. Student student = Student.builder().id(1).name("water").age(18).build();
  11. }
  12. }

@Slf4j

自动生成该类的log静态常量,就可以直接打印日志了,不用去new一个log的静态常量了。

  1. @Slf4j
  2. public class Student {
  3. int id;
  4. String name;
  5. int age;
  6. public static void main(String[] args) {
  7. log.info("hello world");
  8. }
  9. }

以上就是Java中Lombok常用注解有哪些的详细内容,更多关于Java中Lombok常用注解有哪些的资料请关注九品源码其它相关文章!