zoukankan      html  css  js  c++  java
  • java之Lombok

    Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法

    pom依赖:

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

    下面只是介绍了几个常用的注解,更多的请参见https://projectlombok.org/features/index.html

    @Getter/@Setter

    可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。

    @EqualsAndHashCode

    默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。

    @ToString

    生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。

    @NoArgsConstructor、@RequiredArgsConstructor、@AllArgsConstructor

    无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。

    @Data

    @ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,我们使用这个注解就足够了

    使用示例 (以下5个注解,可以只使用@Data注解代替):

    @Getter
    @Setter
    @ToString
    @NoArgsConstructor
    @EqualsAndHashCode
    public class UserEntity {
    
        private String id;
    
        private String lastName;
    
        private String email;
    
        private Integer age;
    
    }

    @Builder 

    优雅的对属性赋值,对外保持private setter

    @Getter
    @Builder(toBuilder = true)
    public class XwjUser implements Serializable {
    
        private static final long serialVersionUID = 1L;
    
        private int id;
    
        private String message;
    
        private Date sendTime;
    
    }
    public static void main(String[] args) {
        // @Builder注解赋值新对象
        XwjUser user = XwjUser.builder().id(1).sendTime(new Date()).message("hahah").build();
        System.out.println(user.toString());
    
        // 修改实体,要求实体上添加@Builder(toBuilder=true)
        user = user.toBuilder().id(2).build();
        System.out.println(user.toString());
    }

    注意:在使用@Builder(toBuilder=true)的时候,得配合@AllArgsConstructor一起使用

  • 相关阅读:
    #3146. 「APIO 2019」路灯
    #3145. 「APIO 2019」桥梁
    #3144. 「APIO 2019」奇怪装置
    雅礼集训2019 D7T2 Subsequence
    Luogu P3600 随机数生成器
    CF 704 D. Captain America
    Luogu P2570 [ZJOI2010]贪吃的老鼠
    Loj #2585. 「APIO2018」新家
    Access denied for user 'root'@'localhost' (using password: NO)
    MySql修改密码
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/9393991.html
Copyright © 2011-2022 走看看