前言
在java开发中,对于属性字段的get和set的封装几乎每个java开发者都会用到,但当我们使用了大量的get/set方法后,代码明显很冗余,并且修改了属性值后对应的方法也得修改,这样一来明显降低了开发效率,当然如果会写注解的可以自己写一个注解程序从而简化这些繁琐的代码,这里我就大概说下别人写的Lombok这个注解程序的使用方法(很实用)。
![355fbfb64f67541b738833d701679cff.png](https://i-blog.csdnimg.cn/blog_migrate/6065ebfc74995bb402961925c3592464.jpeg)
正文
一、java中get、set的方法的作用
get/set方法简介:从get和set的表面意思可以看出一个是设置(set)一个是获取(get),顾名思义get和set的使用是为了数据的安全性,那么安全性是怎么体现的呢?在java中封装代码的作用是为了代码更加模块化,统一化,增加代码的耦合性,减少冗余代码。java是面向对象的编程语言,所谓对象就是一个类的属性(字段)和行为(方法)方式,其实就是private封装的get/set属性,然后用public方法去调用,从而达到访问它们的目的,这样一来只要是这个类的对象都可以调用这个方法中的属性。试想一下当我们调用封装好的属性和方法时,我们只能访问或者去改变具体的属性值,但无法看到内部具体的实现细节,也不能对类中的属性进行修改操作。但是可以去通过固定方式去调用它们。
private方法:private在java中是私有成员,用它修饰的类或者方法时无法直接访问的,必须通过特定的方式访问,比如可以通过构造的方式(构造函数)去访问,或者通过前面提到get/set去访问对应的属性值,说到这里也就明白了,本身private就是具体封闭性的,将内容包含里面,如果没用固定通道,不向外界释放自己的属性值。
public方法:public在java中是公有成员,什么意思呢,就是用他修饰的方法或者属性都可以直接访问,不具有封闭性,暴露性比较强,从而和private配合使用可以达到数据安前性的目的。
构造函数:构造方法的使用在java中也是比较广泛的,构造函数的类名和方法名相同,同时它也没有返回值,一般在java的jvm中会默认创建一个空的构造函数,防止程序调用出错,当然我们一般在调用的时候回首先创建一个空的构造函数,构造函数可以带参数也可以不带参数最常见的就是我们用构造函数去给私有的属性赋值,简化多个get/set的写法。(当然构造函数只能调用,是无法继承的,用new可以创建构造函数对象并且赋值)
![7a3f81ea2150b9f99e260fcda2b4a741.png](https://i-blog.csdnimg.cn/blog_migrate/bf6dd5493c67c539b702bfc591d4565f.jpeg)
二、Lombok的使用简介
那么lombok具体是什么呢?前面大概了解了下get/set方法的使用,那么lombok具体是什么呢?其实前面已经说到,它就是将我们手动需要封装的属性的代码统一封装起来了,做到了模块化的目的,从而随处调用即可使用,注解本身就是最java代码起到了辅助的作用。
在java中如何使用呢?可以下载具体的lombok包安装部署即可,具体网上都有,我们一般用到的就是它里面提供的@data注解,这个注解分别提供了@ToString、@EqualsAndHashCode、@Getter/@Setter、@RequiredArgsConstructor的所有特性,这个注解一般是加载类名的前面的,当jvm调用该类时就会生效并且加载所有特性,缺点就是属性值一多加载会有点慢,那么就可以使用@getter和@setting给每个属性的前面加上即可,自动生成get/set方法,当你修改某个属性值时,无需同时修改get和set的值,只需改变属性值即可,无论有多少属性值皆可以简单搞定。(这里需要注意:使用final修饰的是无法生成的)。
ToString的作用:这个是在类上使用的,生成对应的toString()方法。
EqualsAndHashCode:从词义看就是对equals和hashcode方法的重新生成的过程。
Getter/@Setter:作用在类的属性或者是类上面,生成封装方法。
RequiredArgsConstructor:对特定的也就是一部分的参数进行构造。
![490948d6cced1df9e496cbf0b041fba7.png](https://i-blog.csdnimg.cn/blog_migrate/69ab5af98fe4fc13cc3e3d06fd238b4c.jpeg)
结语:这里只是浅谈了一下java中的一些知识点的使用和总结,当然都是基础知识点,这里面还有很多内容没有说到,有兴趣的可以继续深入或者一起参与讨论。