Lombok高级用法

bean中的链式风格

关键词@Accessors
最佳实践

@Accessors(chain = true)
@Data
public class User {
    private Long id;
    private String name;
    private int age;
}
@Test
    public void test() {
        User user = new User();
        user.setId(1L).setAge(2).setName("Zhangsan");
    }

静态构造方法

构造参数为空的最佳实践

@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "of")
public class User {
    private Long id;
    private String name;
    private int age;
}
@Test
    public void testConstructor() {
        User user = User.of().setId(1L).setAge(2).setName("Zhangsan");
    }

构造参数为name的最佳实践

@Accessors(chain = true)
@Data
@RequiredArgsConstructor(staticName = "of")
public class User {
    private Long id;
    @NonNull
    private String name;
    private int age;
}
@Test
   @Test
    public void testConstructorOfName() {
        User user = User.of("Zhangsan").setId(1L).setAge(2);
        System.out.println(user);
    }

Builder模式

@Builder
public class User {
    private Long id;
    private String name;
    private int age;
}
@Test
    public void testBuilder() {
        User user = User.builder().id(1L).age(2).name("Zhangsan").build();
    }

更多 lombok 注解

lombok 目前最新版本为 1.16.8,个人觉得比较常用的有以下几种,更多请查看官网。

  • @val
    如果你要定义一个final的变量,并且不想写类型,这个可以帮到你。但是,在实际项目中,完全没有使用到。

  • @NonNull
    这个在参数中使用,如果调用时传了null,就直接抛空指针。

  • @Data
    @ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstructor注解的集合。

  • @Getter与@Setter
    作用于属性和类上,自动生成属性的getXXX()和setXXX()方法。若在类上,则对所有属性有效。并可通过AccessLevel参数控制方法的访问级别。

  • @ToString
    作用于类,自动重写类的ToString()方法。常用的参数有exclude(指定方法中不包含的属性)、callSuper(方法中是否包含父类ToString()方法返回的值)

  • @EqualsAndHashCode
    作用于类,自动重写类的equals()、hashCode()方法。常用的参数有exclude(指定方法中不包含的属性)、callSuper(方法中是否包含父类ToString()方法返回的值)

  • @NoArgsConstructor, @RequiredArgsConstructor和@AllArgsConstructor
    作用于类,@NoArgsConstructor自动生成不带参数的构造方法;@RequiredArgsConstructor自动生成带参数的构造方法,主要针对一些需要特殊处理的属性,比如未初始化的final属性;@AllArgsConstructor自动生成包含所有属性的构造方法。

  • @Synchronized
    作用于方法,可锁定指定的对象,如果不指定,则默认创建创建一个对象锁定。

  • @Log,或者直接@Slf4j
    作用于类,具体包含@CommonsLog、@Log、@Log4j、@Log4j2、-
    @Slf4j和@XSlf4j,分别对用不同的日志系统。利用此类注解,可为类创建一个log属性。

参考文章
细思极恐-你真的会写java吗?
使用 lombok 简化 Java 代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,241评论 19 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,904评论 0 4
  • 如果还有梦,典故和传说,我亦愿,过海潮激流,触摸春日阳尘,遇见你,且赢一回。 我意愿,永远留在春天里,成为传说。陪...
    苍耳1980阅读 1,549评论 0 0
  • 昨天在一公众号看到一篇文章《别只埋头苦干,选择比努力更重要》,大概内容做成了思维导图如下(思维导图小白,还在学习中...
    拂景阅读 4,158评论 2 0
  • 文/二刚 假如此生都是为了寻找 在这个婆娑世界里 与你相遇 在无数的星辰里 寻找立足的黑地 千万次...
    狐狸的眼睛阅读 1,454评论 0 0

友情链接更多精彩内容