前言

前几天有个新来的同事(实习生)惊讶的对我说:我们的代码里好多错误,我的程序本地都启动不了。

我一脸懵逼的质问他:目前线上的代码,怎么会有问题吗?

他不服气的说:你来看嘛,就是有问题,Dao实体get()和set()方法都没有。

此处省略10000字,让我流一会儿技术人的眼泪。

Lombok

通常我们代码里的实体Dao或者自定义Bean都会有get()和set()方法,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。一般来说set和get方法都是对私有域变量进行操作的,所以大多数都是使用在包含特定属性的类实体中。

现实中有说许多看到密密麻麻的get()和set()就会头疼,但现在有了Lombok,它提供了简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的 java 代码。通过使用对应的注解,可以在编译源码的时候生成对应的方法,所以不会影响任何运行效率。

但也许有的人由于习惯问题,看不到get()和set()也会缺乏一些安全感。

传统set和get方法

既然是实体,里面少不了要定义变量,而实体变量的值的设置和获取,由set()和get()方法实现。标准set和get方法定义如下:

public class MedalinfoVo {private Long id;private String medalname;private String icon;private Integer isLight;private Integer medallevel;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getMedalname() {return medalname;}public void setMedalname(String medalname) {this.medalname = medalname;}public String getIcon() {return icon;}public void setIcon(String icon) {this.icon = icon;}public Integer getIsLight() {return isLight;}public void setIsLight(Integer isLight) {this.isLight = isLight;}public Integer getMedallevel() {return medallevel;}public void setMedallevel(Integer medallevel) {this.medallevel = medallevel;}}

方法setXxx()参数为该变量的值,即我们在给该变量定义值的时候设置的。

方法getXxx()无参,直接返回该变量的在主内存的值。

可以看到满篇的set和get方法,如果一个实体有20个变量或以上,那么整个class看起来就会非常长而且臃肿,既没有技术含量,又影响着代码的美观,要增加或修改的时候变得麻烦和易错。

重要的是set和get方法,也存在线程同步问题。

Lombok的set和get方法

Lombok是一种自动接通你的编辑器和构建工具的一个Java库。lombok其实就是帮助我们编写getter或者equals方法的一个“工具”。官方网站:Lombok官网

lombok的使用

首先引入maven依赖:

使用了lombok的实体

@Getter@Setterpublic class MedalinfoVo {private Long id;private String medalname;private String icon;private Integer isLight;private Integer medallevel;}

看到没有,使用了lombok的实体,变得非常简洁和美观,而且执行起来效率变得非常快,这是因为lombok库直接调用了java源码类库而实现,具体可以详看lombok源码实现。

lombok实现原理

Lombok的基本流程应该基本是这样:

定义编译期的注解利用JSR269 api(Pluggable Annotation Processing API )创建编译期的注解处理器利用tools.jar的javac api处理AST(抽象语法树)将功能注册进jar包

只是通过简单的@Getter @Setter 注解便可以实现变量的set和get方法,除此外还有@ToString、@NoArgsConstructor (构造函数)等,诸多注解供你使用,为你节省大量宝贵时间和代码提高开发效率。

java get set 注解_java技能提升,用Lombok甩掉get和set,让代码变得更简洁相关推荐

  1. java自定义方法参数注解_Java方法中的参数太多,第1部分:自定义类型

    java自定义方法参数注解 我认为构造函数和方法中冗长的参数列表是Java开发中的另一个" 危险信号 ",就逻辑和功能而言,它们不一定是"错误的",但通常暗示当 ...

  2. Java获取元注解_Java 元注解

    一.介绍 元注解的作用就是负责注解其他注解,Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: @Ta ...

  3. lombok有参构造注解_Java高效开发工具: Lombok

    Lombok, 一个Java开发必备效率工具,可以大大避免编写一些常用方法(get/set, hashcode等),简化开发.虽然现在IDE很多都可以通过快捷键生成POJO的一些方法了,但是如果该PO ...

  4. java 导出excel 注解_Java基于注解和反射导入导出Excel

    list = ei.getDataList(User.class); for (User user : list){ try{ //to do: 保存/处理数据 //userService.save( ...

  5. java有哪些注解_JAVA常用注解

    JDK自带注解 @Override 重写, 标识覆盖它的父类的方法 @Deprecated   已过期,表示方法是不被建议使用的 @Suppvisewarnings 压制警告,抑制警告 元注解 @Ta ...

  6. java 反射 参数 注解_Java编程之反射中的注解详解

    "注解"这个词,可谓是在Java编程中出镜率比较高,而且也是一个老生常谈的话题.我们之前在聊Spring相关的东西时,注解是无处不在,之前我们简单的聊过一些"注解&quo ...

  7. java编译时注解_Java注解处理器--编译时处理的注解

    1. 一些基本概念 在开始之前,我们需要声明一件重要的事情是:我们不是在讨论在运行时通过反射机制运行处理的注解,而是在讨论在编译时处理的注解. 注解处理器是 javac 自带的一个工具,用来在编译时期 ...

  8. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  9. java中修改密码_java中用户密码加密时增加和修改的代码

    建一个MD5.java类 package util; /************************************************ MD5 算法的Java Bean Last M ...

最新文章

  1. 【数据平台】Centos下仅CPU安装TensorFlow
  2. 【刘汝佳代码详解】例题6-4破损的键盘(Broken Keyboard,UVa 11988)
  3. SAP Commerce(SAP Hybris)学习资料汇总
  4. python学习-异常(异常类型,异常处理、自定义异常)
  5. some demos
  6. 一个迄今为止最快的并发键值存储库FASTER诞生
  7. 刷题总结——飞飞侠(bzoj2143 最短路)
  8. 温度补偿计算公式_钢材的基本计算公式(下)
  9. Win7系统下调整硬盘分区大小给C盘更多的空间
  10. 后端CORS解决跨域问题
  11. 第二章 用户画像建模
  12. C专家编程 第1章 C:穿越时空的迷雾 1.1 C语言的史前阶段
  13. 智伴机器人三级分销模式_三级分销系统是什么模式
  14. Tomcat数据库连接池配置沤心沥血而作……
  15. 中国联通客户端被曝Bug:无密码随便登陆
  16. 阿里巴巴Java 开发手册 码出高效,码出质量 1.4.0
  17. 2个硬盘对拷操作图解步骤
  18. SAP ERP 与 Oracle ERP 哪个更适合你?
  19. 开发Iphone第一步(VM7.0 虚拟机安装雪豹Mac OS snow leopard 10.6!)
  20. Java 某个起始时间,固定的累加天数,计算周期

热门文章

  1. 论文浅尝 - TACL2020 | 改进低资源跨语言实体链接的候选生成问题
  2. Session-basedRecommendationwithGraphNeuralNetworks(论文笔记)
  3. 短期记忆容量必需有限
  4. 文献阅读课10-Neural Relation Extraction for Knowledge Base Enrichment(提取+嵌入+消歧+规范化联合模型,实体已知,仅关系抽取,多词实体)
  5. 银行家算法总结及实现
  6. 路飞学城Python-Day171
  7. HDU Integer's Power(容斥原理)
  8. 使用pt-heartbeat检测主从复制延迟
  9. Day Two(Beta)
  10. 【VS开发】CString 转为 char *方法大全