超好用的lombok插件常用注解用法(带代码示例),提示开发效率

lombok安装

  • pom文件依赖引入

  org.projectlombok
	lombok
	1.18.6
  • idea安装lombok插件

Ctrl + Alt + S打开settings,在Plugins搜索lombok,安装重启idea即可。

超好用的lombok插件常用注解用法(带代码示例),提示开发效率

idea安装lombok插件

Getter和Setter注解

生成get、set方法。

代码示例:

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class Test {
    private String name;
    private int age;
}

编译后:生成了所有属性的get、set方法。

超好用的lombok插件常用注解用法(带代码示例),提示开发效率

Getter和Setter编译后class文件

NoArgsConstructor注解

生成无参构造函数。

AllArgsConstructor注解

生成所有参数的构造函数。

代码示例:

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Test {
    private String name;
    private int age;
}

编译后:生成了对应的构造函数。

超好用的lombok插件常用注解用法(带代码示例),提示开发效率

NoArgsConstructor和AllArgsConstructor编译后的class文件

NonNull注解

不能为空。

RequiredArgsConstructor注解

  • NonNull加在属性上表示该属性值在赋值时不能为空。
  • RequiredArgsConstructor生成所有必填属性的构造函数,如果没有必填则生成一个无参构造函数。

代码示例:

import lombok.Getter;
import lombok.Setter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

@Getter
@Setter
@RequiredArgsConstructor(staticName = "constructor")
public class Test {
    @NonNull
    private String name;
    private int age;
}

编译后:

  • 在对应属性set方法里,判断属性值不能为null,为null,则空指针异常。
  • 生成必填项属性的构造函数,可以通过staticName指定一个静态函数名,可以不写。
  • 例子:Test test = Test.constructor("张三");
超好用的lombok插件常用注解用法(带代码示例),提示开发效率

NonNull和RequiredArgsConstructor编译后class文件

Builder注解

生成一个Builder静态内部类。

代码示例:

import lombok.Builder;

@Builder
public class Test {
    private String name;
    private int age;
}

编译后:

  • 生成一个静态方法builder(),返回静态内部类。
  • 可以对属性赋值操作,再调用静态内部类build方法,返回当前对象。
Test test = Test.builder().name("张三").age(14).build();
超好用的lombok插件常用注解用法(带代码示例),提示开发效率

Builder编译后class文件

Data注解

此注解相当于下面五个注解合集效果。

@Getter
@Setter
@RequiredArgsConstructor
@ToString
@EqualsAndHashCode

代码示例:

import lombok.Data;

@Data
public class Test {
    private String name;
    private int age;
}

编译后:

public class Test {
    private String name;
    private int age;

    public Test() {
    }
    public String getName() {
        return this.name;
    }
    public int getAge() {
        return this.age;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public boolean equals(Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof Test)) {
            return false;
        } else {
            Test other = (Test)o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                Object this$name = this.getName();
                Object other$name = other.getName();
                if (this$name == null) {
                    if (other$name == null) {
                        return this.getAge() == other.getAge();
                    }
                } else if (this$name.equals(other$name)) {
                    return this.getAge() == other.getAge();
                }

                return false;
            }
        }
    }
    protected boolean canEqual(Object other) {
        return other instanceof Test;
    }
    public int hashCode() {
        int PRIME = true;
        int result = 1;
        Object $name = this.getName();
        int result = result * 59 + ($name == null ? 43 : $name.hashCode());
        result = result * 59 + this.getAge();
        return result;
    }
    public String toString() {
        return "Test(name=" + this.getName() + ", age=" + this.getAge() + ")";
    }
}
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章