前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Lombok - 让Java代码飘起来

Lombok - 让Java代码飘起来

作者头像
叫我阿柒啊
发布2022-05-09 20:20:53
2090
发布2022-05-09 20:20:53
举报
前言

先为你写下一段常见代码:

代码语言:javascript
复制
public class Person {
    private String name;
    private int age;
    private String sex;
    private String birthday;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}

这个就是我们最常见的代码,每个private修饰的成员变量都有一个setter和getter方法,今天要讲的Lombok就是可以自动帮你生成setter和getter的神器!代码就可以变成下面酱紫!

代码语言:javascript
复制
@Setter
@Getter
public class Person {
    private String name;
    private int age;
    private String sex;
    private String birthday;
}

就是这么清爽,就是这么简洁!那么可能就要开始杠了,为什么不能用public修饰,这样setter和getter就直接可以不用写了,还用什么神器?但是规范就是规范,为了变量的访问权限控制在自己手中,所以必须用private修饰。接下来就是安利Lombok使用和其他功能。

IDEA安装插件(eclipse自行百度)

在settings的Plugins,搜索Lombok并安装,重启IDEA即可生效。

引入依赖

如果你是用的maven项目,使用pom引入:

代码语言:javascript
复制
<dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
</dependency>

不用maven的就直接导入lombok-1.18.12.jar

使用大全

写段代码,包含常用且易懂的Lombok注解

代码语言:javascript
复制
@Setter
@Getter
@Slf4j
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Person {
    private String name;
    private int age;
    private String sex;
    private String birthday;

    public void sing(@NonNull String songName) {
        // @Slf4j生成的logger
        log.info(songName);
        System.out.println(songName);
    }

    public void read(String bookPath) throws FileNotFoundException {
        @Cleanup
        FileInputStream in = new FileInputStream(bookPath);
    }
}
@Setter和@Getter

这两个注解用在类上就是为所有的private成员变量添加getter和setter方法,如果放在成员变量上,就是为单个成员变量添加setter和getter方法

@Slf4j

我们平时使用slf4j打印日志的时候,需要获取logger,

代码如下:

代码语言:javascript
复制
Logger logger = LoggerFactory.getLogger(Person.class);
logger.info("Hello World!")

使用@Slf4j注解之后,lombok帮你创建了一个名为log的logger,可直接使用。

@ToString

这个不推荐使用,虽然可以帮你生成toString方法,但是往往不符合我们的要求。他输出的结果是这样的。

代码语言:javascript
复制
Person(name=null, age=0, sex=null, birthday=null)
@AllArgsConstructor

帮你生成一个包含所有字段的构造器

@NoArgsConstructor

帮你生成一个无参类构造器,即new Person(){}

@NotNull

顾名思义,就是他修饰的变量和参数不能为null。测试一下

代码语言:javascript
复制
public static void main(String[] args) {
        new Person().sing(null);
    }
// 报错:Exception in thread "main" java.lang.NullPointerException: songName is marked non-null but is null
@Cleanup

我们在读取文件的时候创建流,在使用完后总会调用close()来关闭这个流。在获取数据库的connection的时候,用完也会调用close()来关闭连接。@Cleanup修饰在创建流和获取Connection的时候,在使用完成后会自动帮你关闭,你就不用调用close()自行关闭

@Data

这个没写在样例代码中,是因为这个是一个作用在类上,并且是@Setter、@Getter、@Slf4j的集合体。但是不推荐使用。包含的注解如下图:

结语

Lombok简化了代码,但是也会在代码阅读上带来了一些障碍,利弊之间,自行权衡。任何事都有两面,有的人喜欢它,也有厌恶它。从我的角度来说,至少它让我的代码变得更简洁。据说Java14到时候也会提供Lombok的这些功能,拭目以待吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门到放弃之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • IDEA安装插件(eclipse自行百度)
  • 引入依赖
  • 使用大全
    • @Setter和@Getter
      • @Slf4j
        • @ToString
          • @AllArgsConstructor
            • @NoArgsConstructor
              • @NotNull
                • @Cleanup
                  • @Data
                  • 结语
                  相关产品与服务
                  日志服务
                  日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集、日志存储到日志检索,图表分析、监控告警、日志投递等多项服务,协助用户通过日志来解决业务运维、服务监控、日志审计等场景问题。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档