@Data Lombok

简介

Lombok可用例帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO),它通过注释实现这个目的。

intellij安装

  1. 首先通过ideal插件中心进行安装,找到lombok的插件
  2. 导入lonbok包到maven工程
<dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.4</version>
</dependency>

Lombok注解解释

@Data

此注解在类上,提供类所有属性的get和set方法。同时还提供 equals,canEqual,hashCode,toString等方法

@Setter/@Getter

  • 注解在属性上,为单个属性提供set/get方法
  • 注解在类上,为该类所有属性都提供set/get方法,都提供默认构造方法

@Log4j

上注解属性名为log的log4j对象,提供默认构造方法。

@AllArgsConstructor

注解在上,提供全参的构造方法,加了这个注解后,类中不提供默认构造方法了。

### @AllArgsConstructor
public class LomBokData {
    private String name;
    private Integer age;
}

转换成下面代码

public class TestLombok {
    public void testLomBok(){
        LomBokData lomBokData = new LomBokData("dankun",20);
    }
}

@NoArgsConstructor

注解在 上;为类提供一个无参的构造方法。

@EqualsAndHashCode

注解在 上, 可以生成 equals、canEqual、hashCode 方法。

@EqualsAndHashCode
public class LomBokData {
}

转换成下面代码

public class LomBokData {
    public LomBokData() {
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof LomBokData)) {
            return false;
        } else {
            LomBokData other = (LomBokData)o;
            return other.canEqual(this);
        }
    }

    protected boolean canEqual(Object other) {
        return other instanceof LomBokData;
    }

    public int hashCode() {
        int result = 1;
        return result;
    }
}

@NonNull

注解在属性上,会自动产生一个关于此参数的非空校验。如果参数为空,则抛出一个空指针的异常,也会有一个默认的无参构造方法。

@Value

LomBok的@Value和Spring自带的 @Value注解不一样。Spring中的@Value是注解在方法或者字段上
LomBok的@Value注解在上,会生成含所有参数的构造方法,get 方法,此外还提供了equals、hashCode、toString 方法。

@Value
public class LomBokData {
   private String name;
}

转换成下面代码

public final class LomBokData {
    private final String name;

    public LomBokData(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }

    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof LomBokData)) {
            return false;
        } else {
            LomBokData other = (LomBokData)o;
            Object this$name = this.getName();
            Object other$name = other.getName();
            if (this$name == null) {
                if (other$name != null) {
                    return false;
                }
            } else if (!this$name.equals(other$name)) {
                return false;
            }

            return true;
        }
    }

    public int hashCode() {
        int PRIME = true;
        int result = 1;
        Object $name = this.getName();
        int result = result * 59 + ($name == null ? 43 : $name.hashCode());
        return result;
    }

    public String toString() {
        return "LomBokData(name=" + this.getName() + ")";
    }
}

@SneakyThrows

用于方法之上,可以将方法使用try-catch语句进行包裹,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常,也会生成默认的构造方法。


public class LomBokData {
    @SneakyThrows
    public void getName(){
        System.out.println("dankun");
    }
}

生成的代码

public class LomBokData {
    public LomBokData() {
    }

    public void getName() {
        try {
            System.out.println("dankun");
        } catch (Throwable var2) {
            throw var2;
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Lombok可以减少很多重复代码的书写。比如说getter/setter/toString等方法的编写。IDEA安...
    MicoCube阅读 6,161评论 0 1
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 11,156评论 0 4
  • Contents 介绍 安装idea 安装lombokeclipse安装lombok Lombok 注解@Gett...
    雨中星辰0阅读 8,657评论 0 2
  • 今天我们部分执行师相约一起采摘,早上起来吃完早饭,我们就去接小红一起去采摘。在兴华西路的路口,远远的我看到了她和儿...
    婉彤心语阅读 1,079评论 0 0
  • 摘要 当前,建设项目建设中相当重要的一个环节就是工程造价的控制环节。这主要是因为建设项目的造价高低与否,直接关系到...
    我爱吃辣的阅读 7,176评论 0 0