重庆在百度做个网站多少钱,烟台网站关键词推广,怎么给网站做二维码,专业做域名的网站前言前几天有个新来的同事(实习生)惊讶的对我说#xff1a;我们的代码里好多错误#xff0c;我的程序本地都启动不了。我一脸懵逼的质问他#xff1a;目前线上的代码#xff0c;怎么会有问题吗#xff1f;他不服气的说#xff1a;你来看嘛#xff0c;就是有问题#xf…前言前几天有个新来的同事(实习生)惊讶的对我说我们的代码里好多错误我的程序本地都启动不了。我一脸懵逼的质问他目前线上的代码怎么会有问题吗他不服气的说你来看嘛就是有问题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的实体GetterSetterpublic 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 (构造函数)等诸多注解供你使用为你节省大量宝贵时间和代码提高开发效率。