这是上周在群里发现有人推荐lombok,他说是神器,当时就引起了我的好奇,然后下班回来我就看了看官网介绍(菜鸟英语水平),这就是难点了,然后就是大概了解了一下,就在网上查了查相关资料,周末的时候自己试了试,现在来做个总结:

  官网:http://projectlombok.org/  ;进去就有一个几分钟的视频介绍,不过是英语;还有相关的文档等。

  lombok简介:就是通过@Data注解的方式省去了我们平时开发定义JavaBean之后,生成其属性的构造器、getter、setter、equals、hashcode、toString方法;但是,在编译时会自动生成这些方法,在.class文件中。(我就不多介绍了。。。)

  要使用lombok,我们需要安装配置lombok,首先下载lombok.jar包:https://projectlombok.org/download.html

  安装:

    在eclipse中安装使用:(其他开发工具我没弄)

    打开eclipse.ini文件,在最后添加如下两行:

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

    然后重启eclipse。 

 lombok 注解:
  lombok 提供的注解不多,可以参考官方视频的讲解和官方文档。
  文档地址:http://projectlombok.org/features/index.

  下面介绍几个常用的 lombok 注解:
  @Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
  @Setter:注解在属性上;为属性提供 setting 方法
  @Getter:注解在属性上;为属性提供 getting 方法
  @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
  @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
  @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

 在使用之前,我们需要导入相应的包:

   

 下面来瞅瞅代码:

  1、当我没有使用lombok时:

 import java.io.Serializable;

 import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import lombok.Data; public class TestLombok implements Serializable{ private static final long serialVersionUID = 5071239632319759222L;
private static final Logger logger = LoggerFactory.getLogger(TestLombok.class); private String name;
private String gender;
private int age;
  }

下面我们来看看其结构图:

  

从图上可以发现,没有相应的getter,setter等方法。

2、下面我们再来看看加了@Data 注解之后

 import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import lombok.Data; @Data
public class TestLombok implements Serializable{ private static final long serialVersionUID = 5071239632319759222L;
private static final Logger logger = LoggerFactory.getLogger(TestLombok.class); private String name;
private String gender;
private int age;
  }

看看结构图会是什么样子?

从上图可以很明显的发现,加了@Data 注解之后,多了对应的getter,setter等方法。(是不是很简单,笑~~)那么我们再来简单的测试下看看能不能用吧?

 @Test
public void lombok(){
TestLombok lombok = new TestLombok();
lombok.setName("lombok");
lombok.setGender("noGender");
lombok.setAge(99);
System.out.println(lombok.getName()); }

运行结果:

事实证明,这个是有作用的,那么对lombok,我就介绍到这儿了。下面说说我觉得的优缺点吧。

  优点:

     1、首先,大家都看到了,这是一个很方便的工具,省去了我们不少的操作,特别是在类的属性很多的时候,代码看上去也很简洁。

     2、其次,也避免了我们在修改属性时,忘记修改方法的错误。

  缺点:

    1、虽然代码看上去很简洁,但是降低了源代码文件的可读性和完整性(你没发现看上去怪怪的吗,O(∩_∩)O哈哈哈~)

    2、不支持多种参数构造器的重载。

  其他方面的影响本人暂时还不知道,坐等其他大佬来指教,谢谢!

lombok的简单介绍和使用方法的更多相关文章

  1. lombok 注解简单介绍

    一.Lombok 的简单介绍和使用 Lombok是一个可以帮助我们简化 Java 代码编写的工具类,通过采用注解的方式简化了 JavaBean 的编写,使我们写的类更加简洁. 1. 添加 Lombok ...

  2. CSRF简单介绍及利用方法-跨站请求伪造

    0x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP ...

  3. lombok的简单介绍(1)

    一.项目背景 在写Java程序的时候经常会遇到如下情形: 新建了一个Class类,然后在其中设置了几个字段,最后还需要花费很多时间来建立getter和setter方法 lombok项目的产生就是为了省 ...

  4. CSRF简单介绍及利用方法

    x00 简要介绍 CSRF(Cross-site request forgery)跨站请求伪造,由于目标站无token/referer限制,导致攻击者可以用户的身份完成操作达到各种目的.根据HTTP请 ...

  5. lombok的简单介绍

    ##lombok的使用 一直在使用lombok的set和get,对其他的功能用的比较少,蓦然发现这个库好用的功能不要太多啊 有必要深入理解一番. ###lombok安装 1 需要IDE支持,不然开发的 ...

  6. lombok的简单介绍(2)

    在和idea中整合遇到这样问题,实体对象不提示lombok的get/set方法,从网上找到以下方法,分享给大家

  7. 关于ios的autoLayout的一些简单介绍以及使用方法

    一.autoLayout的用途: 主要用于屏幕适配,尤其是出现了iphone6,plus之后. 二.怎么简单的用autoLayout呢? 点击左一,可以看到: 点击左二: 基本上要想autolayou ...

  8. (转)TreeSet简单介绍与使用方法

    TreeSet简介 TreeSet是JAVA中集合的一种,TreeSet 是一个有序的集合,它的作用是提供有序的Set集合.它继承于AbstractSet抽象类,实现了NavigableSet< ...

  9. TreeSet简单介绍与使用方法

    TreeSet简介 TreeSet是JAVA中集合的一种,TreeSet 是一个有序的集合,它的作用是提供有序的Set集合.它继承于AbstractSet抽象类,实现了NavigableSet< ...

随机推荐

  1. Coursera 机器学习笔记(八)

    主要为第十周内容:大规模机器学习.案例.总结 (一)随机梯度下降法 如果有一个大规模的训练集,普通的批量梯度下降法需要计算整个训练集的误差的平方和,如果学习方法需要迭代20次,这已经是非常大的计算代价 ...

  2. vue-cli webpack在node环境下安装使用

    第一步,需要下载并安装node.js以及他的npm组件: 第二步,用node -v;npm -v来测试node.js以及npm是否安装成功(建议用GIT命令行工具,因为GIT是linux系统),如果显 ...

  3. MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)

    殊不知,在N年前被奉为"圣经"的数据库设计3范式早就已经不完全适用了.这里我整理了一些比较常见的数据库表结构设计方面的优化技巧,希望对大家有用. 由于MySQL数据库是基于行(Ro ...

  4. iOS开发之常用资讯类App的分类展示与编辑的完整案例实现(Swift版)

    上篇博客我们聊了<资讯类App常用分类控件的封装与实现(CollectionView+Swift3.0)>,今天的这篇博客就在上篇博客的基础上做些东西.做一个完整的资讯类App中的分类展示 ...

  5. PHP编译

    编译php-5.3.6的时候需要先打一个内存泄露的补丁,具体的操作如下 tar vzxf suhosin-0.9.32.1.tar.gz tar vjxf php-5.3.6.tar.bz2 cd p ...

  6. asp net core 跨平台初体验

    标: 在 ubuntu 16.04 上部署一个 asp.net core 站点,打开网站后显示一段文字.   安装 net core 运行环境:ubuntu 16.04 LTS 1.添加 apt 源 ...

  7. CoordinatorLayout+沉浸式状态栏

    没有gif 说个*B 注意看 状态栏的瑶瑟变化 (如果我是你 我不会去计较下边的toast) 之前为了这个效果我查了好多文章 博客什么的   ,,要么就是刚开始图片背景没有填充到状态栏下   要么就是 ...

  8. document事件及例子

    一.关于鼠标事件:onclick:鼠标单击触发 ondbclick:鼠标双击触发 onmouseover:鼠标移上触发 onmouseout:鼠标离开触发 onmousemove:鼠标移动触发 二.关 ...

  9. 【翻译Autofac的帮助文档】1.入门指南

    [写在前面]尝试做完一件工作之外自我觉得有意义的一件事,那就从翻译Autofac的帮助文档吧. 入门指南 将Autofac集成你的应用程序的步骤通常很简单,一般是: 时刻以IOC(控制反转)的思想来规 ...

  10. VR虚拟现实技术在教育领域的前景展望

    VR虚拟现实技术在教育领域的前景展望 VR虚拟现实技术能迅速火起来,是基于它突破了人们对三维空间在时间与地域上的感知限制,以及市场需求愿景的升级.此技术可广泛地应用到城市规划.室内设计.工业仿真.古迹 ...