Java的lombok注解

前言

项目中经常使用bean,entity等类,绝大部分数据类中都需要get、set、toString、equals和hashCode方法,虽然eclipse和idea开发环境下都有自动生成的快捷方式,但自动生成这些代码后,如果bean中的属性一旦有修改、删除或增加时,需要重新生成或删除get/set等方法,给代码维护增加负担。而使用了lombok则不一样,使用了lombok的注解(@Setter,@Getter,@ToString,@@RequiredArgsConstructor,@EqualsAndHashCode或@Data)之后,就不需要编写或生成get/set等方法,很大程度上减少了代码量,而且减少了代码维护的负担。故强烈建议项目中使用lombok,去掉bean中get、set、toString、equals和hashCode等方法的代码。

常用的lombok注解

@ToString:实现toString()方法
@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
@Cleanup:关闭流
@ToString:实现toString()方法
@EqualsAndHashCode:实现equals()方法和hashCode()方法
@Synchronized:对象同步
@SneakyThrows:抛出异常

@Data

不使用 lombok 的方案

public class Person {
 private String id;
 private String name;
 private String identity;
 private Logger log = Logger.getLogger(Person.class);
 public Person() {
   }
 public Person(String id, String name, String identity) {
      this.id   = id;
      this.name = name;
      this.identity = identity;
  }    
 public String getId() {
       return id;
   } 
 public String getName() {
           return name;
   }
 public String getIdentity() {
     return identity;
  }    
 public void setId(String id) {
      this.id = id;
  }
  public void setName(String name) {
    this.name = name;
  }
  public void setIdentity(String identity) {
      this.identity = identity;
  }
}

使用lombok的方案

 @Data
 @Log4j
 @NoArgsConstructor
 @AllArgsConstructor
 public class Person {
 private String id;
 private String name;
 private String identity;
}

上面的两个 java 类,从作用上来看,它们的效果是一样的,相比较之下,很明显,使用 lombok 要简洁许多
lombok包依赖如下

 <dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
 </dependency>

@Builder

不使用 lombok 的方案

public class Example<T> {
        private T foo;
        private final String bar;
        private Example(T foo, String bar) {
                this.foo = foo;
                this.bar = bar;
        }
        public static <T> ExampleBuilder<T> builder() {
                return new ExampleBuilder<T>();
        }
        public static class ExampleBuilder<T> {
                private T foo;
                private String bar;
                private ExampleBuilder() {}
                public ExampleBuilder foo(T foo) {
                        this.foo = foo;
                        return this;
                }
                public ExampleBuilder bar(String bar) {
                        this.bar = bar;
                        return this;
                }
                @java.lang.Override 
                public String toString() {
                        return "ExampleBuilder(foo = " + foo + ", bar = " + bar + ")";
                }
                public Example build() {
                        return new Example(foo, bar);
                }
        }
 }

使用 lombok 的方案

@Builder
 public class Example {
        private int foo;
        private final String bar;
 }

构造一个实例,属性不需要单独set

Example.builder().foo(1).bar(“test”).build();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值