Lombok骚操作一

Lombok是一个增强Java代码的库,通过注解在编译时自动生成构造方法、getter/setter等,提高代码效率和可读性。本文详细介绍了@Data、@Value、@Builder、@AllArgsConstructor、@NoArgsConstructor、@RequiredArgsConstructor、@Getter、@Setter、@EqualsAndHashCode和@ToString等注解的用途和用法,并附有示例。
摘要由CSDN通过智能技术生成

一、lombok是什么?能做什么?

        lombok是一个增强java代码的java库,可在java代码编译期间,按照预定自动生成部分java代码。

      用途:解放双手,减少不必要的代码或重复代码,增强代码美观性可读性。

二、lombok原理

        Lombok本质上就是一个实现了“JSR 269 API”的程序。在使用javac的过程中,首先javac对源代码进行分析,生成了一棵抽象语法树(AST),然后运行过程中调用实现了“JSR 269 API”的Lombok程序,此时Lombok就对第一步骤得到的AST进行处理,找到注解(如@Getter)所在类对应的语法树(AST),然后修改该语法树(AST),增加getter方法定义的相应树节点;javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)。

三、lombok各注解详解及用法


@Data:用途: 自动生成无参构造方法、属性的getter/Setter方法、重写的equals方法、canEquals方法、重写hashCode方法、重写toString方法。

示例:

@Data
public class User {
    private String userName;
    private Integer userAge;
}

编译后代码:

public class User {
    private String userName;
    private Integer userAge;

    public User() {
    }

    public String getUserName() {
        return this.userName;
    }

    public Integer getUserAge() {
        return this.userAge;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public void setUserAge(Integer userAge) {
        this.userAge = userAge;
    }

    public boolean equals(final Object o) {
        if (o == this) return true;
        if (!(o instanceof User)) return false;
        final User other = (User) o;
        if (!other.canEqual((Object) this)) return false;
        final Object this$userName = this.getUserName();
        final Object other$userName = other.getUserName();
        if (this$userName == null ? other$userName != null : !this$userName.equals(other$userName)) return false;
        final Object this$userAge = this.getUserAge();
        final Object other$userAge = other.getUserAge();
        if (this$userAge == null ? other$userAge != null : !this$userAge.equals(other$userAge)) return false;
        return true;
    }

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

    public int hashCode() {
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值