在java刚开始学习的时候,首先就会学习封装、继承和多态,就拿封装来说,封装就是为了保护数据安全而将实体类内部数据保持为私有状态,如果外部程序想要访问里面的数据就必须调用此实体类提供的相关数据接口,这样既保证了数据安全又保证了对数据的访问控制。

  比如有一个Book类,里面有一个bookName字段,那么在实体类里面如果要实现封装的话就要这样:

public class Book{
private String bookName;
public void setBookName(String bookName){
this.bookName=bookName;
}
public String getBookName(){
return this.bookName;
}

  这里的getBookName和setBookName就是数据访问接口,如果要得到数据必须调用getBookName,要想设置数据必须调用setBookName。在类熟悉比较少(1-3)的情况下自己写或者通过eclipse和Idea的生成方法可以很轻松的实现,但是如果这个类的属性非常多,高达二十几个甚至更多,难道还要这样自己写吗?用IDEA的自动生成工具是可以一次性生成所有的get和set方法,但是如果后来属性名和返回值类型这些有大量改动去一个一个改动是不是会显得很麻烦,这个时候就体现出工具的重要性了,lombok就是这样一个一键生成get和set的代码方法生成工具,使用lombok后book类变成了这样:

@Data
public class Book{
private String bookName;
}

@Data是lombok的使用注解,当使用此注解后lombok会自动为实体类的属性创建get和set方法,而无需自己再去写,这也意味着属性名和值的改变我们都不再需要管了,把更多的精力放在代码开发上来创造更多的个人价值。这里是lombok的部分源码:

/**
* @see Getter
* @see Setter
* @see RequiredArgsConstructor
* @see ToString
* @see EqualsAndHashCode
* @see lombok.Value
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data { String staticConstructor() default "";
}

@interface声明这是一个注解,Getter用于生成get方法,Setter用于生成set方法,RequiredArgsConstructor用于自动生成构造函数,ToString用于生成toString方法,EqualsAndHashCode表示自动生成equals和hashCode方法,静态构造函数默认生成" ";也就是说一个@Data就可以同时实现以上6种注解,对于我们一般的实体类来说有时候显得太臃肿,因为@Data引入了一些不必要的功能,那么怎么办呢,比如说我们只想实现get和set,这其实很简单,直接使用Getter和Setter就行了:

@Getter
@Setter
public class Book{
private String bookName;
}

这样下来代码一下就轻便了很多,也没有引入多余的功能。

最新文章

  1. SVN服务器搭建
  2. iOS可执行文件瘦身方法
  3. BZOJ4416: [Shoi2013]阶乘字符串
  4. [Linux] 结构化命令 if
  5. MojoDatabase 源码学习之对象映射
  6. Tomcat 6.0 简介
  7. vagrant系列教程(四):vagrant搭建redis与redis的监控程序redis-stat(转)
  8. 使用Sharepoint定时运行Excel中宏程序
  9. splay学习
  10. 清理PC垃圾
  11. selenium+python自动化之pycharm
  12. 如何使用jetty
  13. win7 开wifi热点
  14. Errors occurred during the build. Errors running builder 'DeploymentBuilder' on project '项目名'
  15. Delphi 总结操作Excel
  16. Python常用模块中常用内置函数的具体介绍
  17. 窗口绘制有关的消息整理 WM_PAINT, WM_NCPAINT, WM_ERASEBKGND
  18. Android Weekly Notes Issue #281
  19. 那些年我们一起踩过的Dubbo"坑"
  20. SpringBoot使用Sharding-JDBC读写分离

热门文章

  1. keyring源码加密解密函数分析
  2. CSS实现宽度自适应100%,宽高16:9的比例的矩形
  3. bzoj2843极地旅行社
  4. js 左右切换 局部刷新
  5. DEX文件解析--4、dex类的类型解析
  6. 给咱的服务器安装BBR脚本
  7. 题解 洛谷 P3185 【[HNOI2007]分裂游戏】
  8. Python3的一些基本输入输出
  9. JAXB XML生成CDATA类型的节点
  10. MySQL之高级操作