Lombok

Lombok是一个Java库,通过注解方式简化代码,如@NonNull防止空指针,@Setter/Getter生成getter和setter方法,@Data自动创建getter、setter等。使用Lombok可以减少冗余代码,提高代码整洁度,但可能降低代码可读性,需要团队成员统一配置。
摘要由CSDN通过智能技术生成

简介

1.概要
  • Lombok是一个Java库,可以自动插入编辑器和构建工具
  • 通过注解的方式可以自动化生成gettersetter等方法,使代码变的更整洁
2.使用前
  • 普通项目直接下载jar包,导入项目即可

    下载地址

  • maven项目中需要在pom.xml中添加依赖

    <dependency>
    	<groupId>org.projectlombok</groupId>
    	<artifactId>lombok</artifactId>
    	<version>1.18.4</version>
    	<scope>provided</scope>
    </dependency>
    
  • 还需要安装对应的lombok插件

常用注解与示例

1.常用注解
  • @Setter/@Getter

    • 注解于类或字段
    • 为类或该字段生成setter/getter方法
  • @ToString:注解在类,为该类添加相应的tostring方法

  • @NonNull

    • 注解在属性或者给构造器上,会生成非空声明
    • 易于3校验参数,避免空指针
  • @Cleanup

    • 注解在变量前,自动关闭变量资源
    • 默认是调用资源的close()方法,@Cleanup("xxx")来指定要调用的方法
  • @EqualsAndHashCode 注解在类,生成hashCodeequals方法

  • @NoArgsConstructor@RequiredArgsConstructor@AllArgsConstructor

    • @NoArgsConstructor 注解在类,生成无参的构造方法

    • @RequiredArgsConstructor

      • 注解在类,为类中需要特殊处理的字段生成构造方法
      • 如果类中含有final修饰的成员变量,是无法使用的
    • @AllArgsConstructor 注解在类,生成包含类中所有字段的构造方法。

  • @Data

    • 注解在类,生成setter/getterequalscanEqualhashCodetoString方法
    • 如为final属性,则不会为该属性生成setter方法
2.示例
  • 以下我们通过定义一个学生类,来做一个小例子

    public class Student {
        private int id;
        private String name;
        private String gender;
        private int age;
    }
    
  • 我们需要生成getter和setter方法,即使可以自动生成,但是占据的代码篇幅也较多

    package org.example;
    import lombok.Getter;
    
    public class Student {
        private int id;
        private String name;
        private String gender;
        private int age;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setGender(String gender) {
            this.gender = gender;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public String getGender() {
            return gender;
        }
    
        public int getAge() {
            return age;
        }
        
        public int hashCode() {
            return super.hashCode();
        }
    
        @Override
        public String toString() {
            return super.toString();
        }
    }
    
  • 通过@Setter/@Getter来简化臃肿的代码

    @Getter
    @Setter
    public class Student {
        private int id;
        private String name;
        private String gender;
        private int age;
        
        public int hashCode() {
            return super.hashCode();
        }
    
        @Override
        public String toString() {
            return super.toString();
        }
    }
    
  • 同样的,也可使用@ToString@EqualsAndHashCode 来生成相应方法

    @Getter
    @Setter
    @ToString
    @EqualsAndHashCode
    public class Student {
        private int id;
        private String name;
        private String gender;
        private int age;
    }
    
  • 如果你对头上的一坨东西感觉不爽的话,可以用@Data来替代它们

    @Data
    public class Student {
        private int id;
        private String name;
        private String gender;
        private int age;
    }
    
3.结语
  • lombok可以大大的改善臃肿的代码,使代码更加简洁
  • 但是也降低了代码的可读性,内容对外是封闭的
  • 而且需要合作者都要配置好lombok才可以正常执行程序
  • 使用的时候要适当,可以有更好的编码体验
  • 乱用也会给自己带来很多困扰
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值