Lombok介绍及使用方法 lombok简介

转载

http://www.cnblogs.com/holten/p/5729226.html

Lombok介绍及使用方法

lombok简介

lombok是暑假来到公司实习的时候发现的一个非常好用的小工具,刚见到的时候就感觉非常惊艳,有一种相见恨晚的感觉,用了一段时间之后感觉的确挺不错,所以特此来推荐一下。

lombok的官方地址:https://projectlombok.org/

lombok的Github地址:https://github.com/rzwitserloot/lombok

那么lombok到底是个什么呢,lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 Java 代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立getter和setter方法啊,构造函数啊之类的,lombok的作用就是为了省去我们手动创建这些代码的麻烦,它能够在我们编译源码的时候自动帮我们生成这些方法。

lombok能够达到的效果就是在源码中不需要写一些通用的方法,但是在编译生成的字节码文件中会帮我们生成这些方法,这就是lombok的神奇作用。

虽然有人可能会说IDE里面都自带自动生成这些方法的功能,但是使用lombok会使你的代码看起来更加简洁,写起来也更加方便。

lombok安装

lombok的安装跟一般引用jar包没有什么区别,可以到官网上下载最新的jar包,然后导入到项目里面就好啦。

Maven添加依赖

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
    </dependency>
</dependencies>

Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

lombok使用

lombok使用过程中主要是靠注解起作用的,官网上的文档里面有所有的注解,这里不一一罗列,只说明其中几个比较常用的。

@NonNull: 可以帮助我们避免空指针。

使用lombok:

import lombok.NonNull;
    public class NonNullExample extends Something {
        private String name;
        public NonNullExample(@NonNull Person person) {
        super("Hello");
        this.name = person.getName();
    }
}

不使用lombok:

public class NonNullExample extends Something {
    private String name;
    public NonNullExample(@NonNull Person person) {
        super("Hello");
        if (person == null) {
            throw new NullPointerException("person");
        }
        this.name = person.getName();
    }
}

@Cleanup: 自动帮我们调用close()方法。

使用lombok:

import lombok.Cleanup;
import java.io.*;
public class CleanupExample {
    public static void main(String[] args) throws IOException {
        @Cleanup InputStream in = new FileInputStream(args[0]);
        @Cleanup OutputStream out = new FileOutputStream(args[1]);
        byte[] b = new byte[10000];
        while (true) {
            int r = in.read(b);
            if (r == -1) break;
            out.write(b, 0, r);
        }
    }
}

不使用lombok:

import java.io.*;
    public class CleanupExample {
        public static void main(String[] args) throws IOException {
            InputStream in = new FileInputStream(args[0]);
            try {
                OutputStream out = new FileOutputStream(args[1]);
                try {
                    byte[] b = new byte[10000];
                    while (true) {
                    int r = in.read(b);
                    if (r == -1) break;
                    out.write(b, 0, r);
                    }
                } finally {
                    if (out != null) {
                        out.close();
                    }
                }
            } finally {
                if (in != null) {
                in.close();
            }
        }
    }
}

@Getter / @Setter: 自动生成Getter/Setter方法

使用lombok:

    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    public class GetterSetterExample {
        @Getter @Setter private int age = 10;
        @Setter(AccessLevel.PROTECTED) private String name;
    }

不使用lombok:

public class GetterSetterExample {
    private int age = 10;
    private String name;
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    protected void setName(String name) {
        this.name = name;
    }
}

@NoArgsConstructor: 自动生成无参数构造函数。

@AllArgsConstructor: 自动生成全参数构造函数。

@Data: 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!

还有其他一些比如自动生成日志对象等等之类的注解可以到官方网站去了解,就不一一列举了。

官方文档https://projectlombok.org/features/index.html

时间: 2024-09-05 19:30:31

Lombok介绍及使用方法 lombok简介的相关文章

Python中的lstrip()方法使用简介

  这篇文章主要介绍了Python中的lstrip()方法使用简介,是Python入门的基础知识,需要的朋友可以参考下 lstrip()方法返回所有字符被去除开头字符串(缺省为空格字符)的一个复本. 语法 以下是lstrip()方法的语法: ? 1 str.lstrip([chars]) 参数 chars -- 您提供要剪裁的字符. 返回值 此方法返回所有字符都被去除字符串开头(缺省为空格字符)的字符串的一个复本. 例子 下面的例子显示了lstrip()方法的使用. ? 1 2 3 4 5 6

Python中的hypot()方法使用简介

  这篇文章主要介绍了Python中的hypot()方法使用简介,是Python入门所需掌握的基础知识,需要的朋友可以参考下 hypot()方法返回的欧几里德范数 sqrt(x*x + y*y). 语法 以下是hypot()方法的语法: ? 1 hypot(x, y) 注意:此函数是无法直接访问的,所以我们需要导入math模块,然后需要用math的静态对象来调用这个函数 参数 x -- 这必须是一个数值 y -- 此方法返回欧几里德范数 sqrt(x*x + y*y) 返回值 此方法返回欧几里德

以集市卖家分层为例介绍用户研究方法

文章描述:用户分层研究方法--以集市卖家为例. 写在前面:本文是笔者以往研究的经验总结,由于涉及敏感数据,故作了虚化和符号化处理,读起来会有些费劲,但数字呈现不是主旨,本文侧重用户分层研究的方法,希望能给大家提供一套做用户分层的研究思路和操作流程. 本文讨论的是用户分层,有别于常规的用户细分,最大的区别在于分层是定序的概念,即各层之间有递进关系:而常规细分是定类的概念,即各类之间相对独立.广义上而言,细分包括分层. 现以集市卖家分层为例,介绍整个研究方法.根据以往卖家研究的经验,选取参与卖家分层

安卓UI设计与开发教程 底部菜单栏(二)Fragment的详细介绍和使用方法

由于TabActivity在Android4.0以后已经被完全弃用,那么我就不再浪费口水继续讲解它了,取而代之的是 Fragment.Fragment是Android3.0新增的概念,Fragment翻译成中文是碎片的意思,不过却和Activity十分的 相似,这一篇我花大量的篇幅来详细的讲解Fragment的介绍和使用方法. 一.Fragment的基础知识介 绍 1.1概述 1.1.1 特性 Fragment是activity的界面中的一部分或一种行为.可以把多个 Fragment组合到一个a

ITTC数据挖掘平台介绍(综述)——平台简介

数据挖掘方兴未艾,大量新事物层出不穷.本系列将介绍我们自主设计的数据挖掘软件平台.与大家共同分享对知识,微博,人际等复杂网络的分析,以及对自然语言处理的见解. 一.我们需要怎样的数据挖掘系统       一直以来,以高校为代表的学术界和以公司为代表的商业界,都有很大的隔阂.学术界普遍不会做产品,商业界普遍不会搞研究.如果两者都强,那就是美国军方了.        在数据挖掘领域更是如此,大量关于复杂网络,自然语言处理的牛文层出不穷,却被研究机构和大公司养在深闺人未识.绝大多数智能机器学习算法被封

关于RequireJS的简单介绍即使用方法_javascript技巧

RequireJS介绍 RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用.使用RequireJS加载模块化脚本将提高代码的加载速度和质量. 兼容性 浏览器(browser) 是否兼容 IE 6+ 兼容 Firefox 2+ 兼容 Safari 3.2+ 兼容 Chrome 3+ 兼容 Opera 10+ 兼容 优点 实现js文件的异步加载,避免网页失去响应 管理模块之间的依赖性,便于代码的编写和维护 快速上手 step 1 引入require.js requir

MOS2010的界面介绍和定制方法简介【资料汇集】

MOS2010的界面相比以前的版本进行了大幅度的修改,充分借鉴了Office07引入的Ribbon等成功元素.下面把使用和学习中整理的相关资料总结一下. MOS2010主要的界面元素和图示 Server ribbon Status bar Notification area List item menu (LIM) Modal dialogs CSS控制 Microsoft split Cascading Style Sheet (CSS) files into multiple files t

lombok系列1:初识lombok

初识lombok 官网:https://projectlombok.org/ 什么是lombok 连官网都懒得废话,只给出了一句广告词:给你的java加点料(spice up your java). 我们自己来总结一下: lombok是一个ide插件,它可以让我们写更少的代码,而编译出更多的字节码. 也就是说,我们可以让我们编译出一个复杂的.class文件,而我们的.java文件很干净清爽. 为什么要使用lombok 首先,我们可以写更少的代码,而不影响其他类引用,方法一个不能少: 其次,lom

pureQuery内联方法风格简介

IBM pureQuery 是一种高性能 Java 数据访问平台,其目标主要是简化数据访问应用程序的开发和管理.它由工具.API 和运行时组成.pureQuery 引入了两种编程风格,以帮助用户通过简单但是强大的 API 访问数据库.本文介绍其中的一种风格,即内联方法编程风格,并讨论如何使用它有效地查询和更新数据库.本文还探索使用内联方法编程风格的一些优点和关键特性. 简介 pureQuery 为 SQL 执行引入了两种编程风格:内联方法编程风格和带注释的方法编程风格.这些编程风格为存储和检索对