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一起使用

  • 相关阅读:
    页面状态加载.... JS
    创建windows服务&监控SQL数据运行状态(原)
    为图片添加锚点
    当jquery遇上了json 哇哈哈
    关于SVN源代码管理
    最新最全的ASP.NET学习资源大全
    .NET开发人员必知的八个网站
    关于回车执行(回车触发事件)
    DIV+CSS布局
    优化Linux下的内核TCP参数来提高服务器负载能力
  • 原文地址:https://www.cnblogs.com/xuwenjin/p/9393991.html
Copyright © 2011-2022 走看看