Java开发 中使用 Lombok 编写代码

Lombok的使用步骤

引入相应的maven包

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.16.18</version>
    <scope>provided</scope>
</dependency>

Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

IDEA工具添加对Lombok的支持

IDEA中引入Lombok支持如下:
1、点击File-- Settings设置界面,安装Lombok插件:
在这里插入图片描述
2、点击File-- Settings设置界面,开启Annocation Processors:
在这里插入图片描述
开启该项是为了让Lombok注解在编译阶段起到作用。

Eclipse的Lombok插件安装可以自行百度,也比较简单,值得一提的是,由于Eclipse内置的编译器不是Oracle javac,而是eclipse自己实现的Eclipse Compiler for Java (ECJ).要让ECJ支持Lombok,需要在eclipse.ini配置文件中添加如下两项内容:

-Xbootclasspath/a:[lombok.jar所在路径]
-javaagent:[lombok.jar所在路径]

Lombok注解的使用

POJO类常用注解:
@Data: 一般用于实体类上,是以下注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
在这里插入图片描述
@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。
@ToString: 作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
在这里插入图片描述
@EqualsAndHashCode: 作用于类,覆盖默认的equals和hashCode

@NonNull: 主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。
在这里插入图片描述
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor: 作用于类上,用于生成构造函数。有staticName、access等属性。
staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
@NoArgsConstructor: 生成无参构造器;
@RequiredArgsConstructor: 生成包含final和@NonNull注解的成员变量的构造器;@AllArgsConstructor: 生成全参构造器。
在这里插入图片描述
@Builder: 作用于类上,将类转变为建造者模式。可以让你以下面显示的那样调用你的代码,来初始化你的实例对象。

Student.builder()
               .sno( "001" )
               .sname( "admin" )
               .sage( 18 )
               .sphone( "110" )
               .build();
@Builder
public class User {
    private final Integer code = 200;
    private String username;
    private String password;
}

// 编译后:
public class User {
    private String username;
    private String password;
    User(String username, String password) {
        this.username = username; this.password = password;
    }
    public static User.UserBuilder builder() {
        return new User.UserBuilder();
    }

    public static class UserBuilder {
        private String username;
        private String password;
        UserBuilder() {}

        public User.UserBuilder username(String username) {
            this.username = username;
            return this;
        }
        public User.UserBuilder password(String password) {
            this.password = password;
            return this;
        }
        public User build() {
            return new User(this.username, this.password);
        }
        public String toString() {
            return "User.UserBuilder(username=" + this.username + ", password=" + this.password + ")";
        }
    }
}

@Log: 作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:
在这里插入图片描述

其他重要注解:
@Cleanup: 自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
在这里插入图片描述
编译后结果如下:
在这里插入图片描述
是不是简洁了太多。

@SneakyThrows: 可以对受检异常进行捕捉并抛出,可以改写上述的main方法如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值