zoukankan      html  css  js  c++  java
  • 分享Java开发的利器-Lombok

    译注:Lombok是一个很老的项目了,也非常实用,但奇怪的是这么多年来似乎一直不温不火。很多Lombok特性可以参考它的官网介绍哈。兄弟连教育在这里只是简单介绍一下它的基础功能。

    Lombok是一个旨在减少代码开发工作的Java库。兄弟连在本文介绍了如何用它来完成getter/setter方法,构造方法,以及重写equals()hashCode()toString()方法。在Java中,一个很简单的类却往往写得特别复杂。如果你没听说过Lombok的话,那它肯定会让你满意的。

    Lombok可以帮助Java开发人员完成以下这些事情:

    不用再写setter/getter方法了

    不用Lombok的话,我们通常都得这么写:

    public class Animal {

        private String name;

        private String gender;

        private String species;

        public String getName(){

            return this.name;

        }

        public void setName(String name){

            this.name = name;

        }

        public String getGender(){

            return this.gender;

        }

        public void setGender(String gender){

            this.gender = gender;

        }

        public String getSpecies(){

            return this.species;

        }

        public void setSpecies(String species){

            this.species = species;

        }

    }

    这些方法写多了之后,我慢慢开始有点讨厌Java了。

    有了Lombok之后:

    public class Animal {

        @Getter @Setter private String name;

        @Getter @Setter private String gender;

        @Getter @Setter private String species;

    }

    日子开始变得滋润多了。 下面还有Lombok其它的一些很棒的特性。

    不用再重写toString方法。 可以给类加上@ToString注解,Lombok会自动重写toString方法并打印出类的所有字段。

    不用再重写equalshashCode方法 @EqualsAndHashCode注解可以自动生成这些方法

    通过类注解来生成构造方法 @NoArgsConstructor生成一个默认的构造方法 @RequiredArgsConstructor为所有final和非空(译注:带有@NonNull注解)字段生成一个构造方法 @AllArgsConstructor会为所有字段生成一个构造方法

    @Data@ToString, @EqualsAndHashCode, @RequiredArgsConstructor, @Getter / @Setter这些注解的一个快捷方式。

    这些是最常用到的Lombok特性。其它的一些功能可以到它的项目主页上进行了解。

    示例

    假设我们有一个类是需要支持序列化的,并且需要一个构造方法。这需要重写equals,hashCode,toString,同时为私有成员变量提供setter/getter方法,并实现一个构造方法。

    使用了Lombok

    @RequiredArgsConstructor

    @ToString

    @EqualsAndHashCode

    public class Animal {

        @Getter @Setter private String name;

        @Getter @Setter private String gender;

        @Getter @Setter private String species;

    }

    没有使用Lombok

    public class Animal {

        private String name;

        private String gender;

        private String species;

        public Animal(String name, String gender, String species) {

            this.name = name;

            this.gender = gender;

            this.species = species;

        }

        public String getName(){

            return this.name;

        }

        public void setName(String name){

            this.name = name;

        }

        public String getGender(){

            return this.gender;

        }

        public void setGender(String gender){

            this.gender = gender;

        }

        public String getSpecies(){

            return this.species;

        }

        public void setSpecies(String species){

            this.species = species;

        }

        @Override

        public boolean equals(Object o) {

            if (this == o) return true;

            if (!(o instanceof Animal)) return false;

            Animal animal = (Animal) o;

            if (gender != null ? !gender.equals(animal.gender) : animal.gender != null) return false;

            if (name != null ? !name.equals(animal.name) : animal.name != null) return false;

            if (species != null ? !species.equals(animal.species) : animal.species != null) return false;

            return true;

        }

        @Override

        public int hashCode() {

            int result = name != null ? name.hashCode() : 0;

            result = 31 * result + (gender != null ? gender.hashCode() : 0);

            result = 31 * result + (species != null ? species.hashCode() : 0);

            return result;

        }

        @Override

        public String toString() {

            return Objects.toStringHelper(this) //Using guava library objects toString

                    .add("name", name)

                    .add("gender", gender)

                    .add("species", species)

                    .toString();

        }

    }

    很多Java开发人员会争辩道,"有加注解的那个工夫,IDE早就把这些代码给生成了!"

    我想说的是你没有说到点子上。人们不喜欢Java是因为它的代码里必须要有这些乱七八糟的东西。像Ruby, Groovy, Perl或者别的脚本语言,都比这简单多了。简单即是美,兄弟连小编觉得LombokJava很般配呢。

  • 相关阅读:
    SharePoint 2013 配置基于表单的身份认证
    SharePoint 2013 场解决方案包含第三方程序集
    SharePoint 2010 站点附加数据升级到SP2013
    SharePoint 2013 在母版页中插入WebPart
    SharePoint 2013 搭建负载均衡(NLB)
    SharePoint 部署解决方案Feature ID冲突
    SharePoint 2013 配置基于AD的Form认证
    SharePoint Server 2016 Update
    SharePoint 2013 为用户组自定义EventReceiver
    SharePoint 2013 JavaScript API 记录
  • 原文地址:https://www.cnblogs.com/lampbrotherIT/p/5691126.html
Copyright © 2011-2022 走看看