前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java之Lombok

java之Lombok

作者头像
码农王同学
发布2019-10-24 20:34:05
3370
发布2019-10-24 20:34:05
举报
文章被收录于专栏:后端Coder后端Coder

我们先看下官方是如何介绍Lombok的吧

代码语言:javascript
复制
Project Lombok
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.

针对上面的介绍,我们简要说下它,首先它是一个java库,它通过注解的方式使你不用再为成员属性生成get/set等其它方法,就是说它简化了你程序的代码了,使程序的书写变简洁了。

下面看下它是如何在程序中使用的吧,要想使用首先需要在自己的IDE工具里先安装一个lombok插件,然后去往这个maven仓库搜索lombok,这里我们将需要用到的lombok写到文章里。

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.10</version>
    <scope>provided</scope>
</dependency>

将其放到自己maven的pom文件里就行了,好的,下面我们还是通过程序的方式来逐渐说明其使用的方式了。

我们先写个不使用lombok类库的示例,是不是觉得代码生成的太多了,其实生成这么多方法不是什么问题,当我们修改自己定义的属性字段名称或者数据类型时是比较麻烦的,因为我们要重新生成它们的方法。

代码语言:javascript
复制
public class LombokTest {
    public static void main(String[] args) {
        User user = new User("公众号~后端Coder", "0.1");
        System.out.println("user = " + user);
    }

    static class User {
        private String name;
        private String age;

        public User(String name, String age) {
            this.name = name;
            this.age = age;
        }

        public String getName() {
            return name;
        }

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

        public String getAge() {
            return age;
        }

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

        @Override
        public boolean equals(Object o) {
            if (this == o) {
                return true;
            }
            if (o == null || getClass() != o.getClass()) {
                return false;
            }
            User user = (User) o;
            return Objects.equals(name, user.name) &&
                    Objects.equals(age, user.age);
        }

        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }

        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", age='" + age + '\'' +
                    '}';
        }
    }

ok,我们看下基于lombok注解我们的示例是什么的一种形式呢

代码语言:javascript
复制
public class LombokTest {
    public static void main(String[] args) {
        User user = new User("公众号~后端Coder", "0.1");
        System.out.println("user = " + user);
    }
    @Data
    @AllArgsConstructor
    static class User {
        private String name;
        private String age;
    }
}

看到了吧,基于lombok类库提供的注解形式我们的示例程序就这样简洁了。

好了,我们下面要介绍的就是lombok常用注解的使用方式和简短的说明了。

代码语言:javascript
复制
@AllArgsConstructor//作用在类上是为了生成全参构造函数
    static class User {
        @Setter //作用在成员属性上是为生成set方法
        @Getter //作用在成员属性上是为了生成get方法
        private String name;
        @Setter
        @Getter
        private String age;
    }

下面我们看下@Data注解的作用吧。

代码语言:javascript
复制
    @Data//作用在类上,生成get/set/toString/equals/hashcode方法
    @AllArgsConstructor
    @NoArgsConstructor//生成无参构造函数
    static class User {
        private String name;
        private String age;
    }

这就是用了@Data注解再也不想写其它方法的优势所在了。

下面我们继续分享自己在实际应用中使用到的一些点,比如自己喜欢链式编程,然后就在自己的程序上面使用了这个注解,下面我们还是通过程序示例的方式说明吧。

代码语言:javascript
复制
public class LombokTest {
    public static void main(String[] args) {
        System.out.println(new User().setName("微信公众号!后端Coder").setAge("0.1"));
    }
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Accessors(chain = true)//通过这个注解就实现了链式编程
    static class User {
        private String name;
        private String age;
    }
}

在上面的输出信息时,我们仅用了一行代码就完成了。

下面我们继续看下另外一个注解吧。

Tips:左右滑动可以看完整代码信息。

代码语言:javascript
复制
public class LombokTest {
    public static void main(String[] args) {
        System.out.println(new User().setName("微信公众号!后端Coder").setAge("0.1"));
    }
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Accessors(chain = true)//通过这个注解就实现了链式编程
    static class User {
        private String name;
        private String age;
    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农王同学 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档