背景:我今天在看研发项目代码的时候,发现rd很多暴露接口会@Data@NoArgsConstructor等注解,后来查了一下是Lombok第三方库的功能,觉得蛮不错的,简单记录一下使用。
Lombok库主要通过注解的形式修饰类,变量和方法。省去写set/get变量值的方法、有参数/无惨构造器和输入变量的值(还有一些其他功能,我这里面就记录代码用到了)。
先看下项目中用到,如图,三个注解,@Data,@NoArgsConstrucor,@AllArgsConstructor这个三个。
Lombok很多注解,我觉得可以分成三类:修饰类,修饰变量和修饰方法。
修饰类:
@Getter(value = AccessLevel.PUBLIC)
@Setter(value=AccessLevel.PUBLIC)
这两个主要代替我们经常对变量进行值的写入和获取,除了修饰类,还可以修饰变量,那么该变量就可以直接有set、get方法。
举个例子,如图:这样id就有了setid和getid两个方法。同时我们设置变量访问权限这里面设置public。
这里面有个java基础就是变量权限分成4中:
public->producted->default->private 权限依次递减。
@NoArgsConstructor:没有参数的构造方法
@AllArgsConstructor:全部参数的构造方法
构造方法:主要针对类,表现形式和类名必须一致,但是没有返回值 这种:public 类名()。主要作用就是为类实例化设置属性。
无参数构造方法:new的不需要传参。
全参数构造方法:new所有参数都要赋值,这个一般和@NOTNULL一起使用,表示该变量不能为空。
@Data :是多个注解的集合包含:@getter,@setter,@tostring,@canEqual,@equals,@hashCode。
ps:hashcode和equals 都是判断两个对象是否一致,区别在于:
hashcode:效率高但是并不可靠,即两个不同对象通过生成hash值也可能相同
equals:效率低但是准确。
所以一般选择想用hashcode判断,不同肯定不是一个对象,相同在用equals去判断。
https://www.jianshu.com/p/2543c71a8e45
https://blog.csdn.net/ThinkWon/article/details/101392808
https://blog.csdn.net/bailu666666/article/details/81153815