黑马程序员技术交流社区

标题: 【上海校区】Java优雅高效巧技之Lombok [打印本页]

作者: slove160408    时间: 2018-12-26 18:40
标题: 【上海校区】Java优雅高效巧技之Lombok
本帖最后由 slove160408 于 2018-12-26 19:16 编辑

背景
        我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法,那Java中有没有一种方式能够避免这种重复的劳动呢?答案是有,我们来看一下下面这张图,右面是一个简单的JavaBean,只定义了两个属性,在类上加上了@Data,从左面的结构图上可以看到,已经自动生成了上面提到的方法。

Lombok简介
  Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。官方地址:https://projectlombok.org/,github地址:https://github.com/rzwitserloot/lombok。
Lombok使用
注解介绍
  下面只是介绍了几个常用的注解,更多的请参见https://projectlombok.org/features/index.html。
@Getter / @Setter
  可以作用在类上和属性上,放在类上,会对所有的非静态(non-static)属性生成Getter/Setter方法,放在属性上,会对该属性生成Getter/Setter方法。并可以指定Getter/Setter方法的访问级别。
@EqualsAndHashCode
  默认情况下,会使用所有非瞬态(non-transient)和非静态(non-static)字段来生成equals和hascode方法,也可以指定具体使用哪些属性。
@ToString
  生成toString方法,默认情况下,会输出类名、所有属性,属性会按照顺序输出,以逗号分割。
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
  无参构造器、部分参数构造器、全参构造器,当我们需要重载多个构造器的时候,Lombok就无能为力了。
@Data
  @ToString, @EqualsAndHashCode, 所有属性的@Getter, 所有non-final属性的@Setter和@RequiredArgsConstructor的组合,通常情况下,我们使用这个注解就足够了。
Lombok问题
        无法支持多种参数构造器的重载。
idea下安装Lombok插件
第一步:找到配置下的插件管理器,点击插件仓库搜索lombok进行安装




第二步:配置编译器扫描注解,然后重启idea.


第三步:使用lombok时需要用到lombok jar包 这里给出maven地址
[Java] 纯文本查看 复制代码

<dependency>
       <groupId>org.projectlombok</groupId>
       <artifactId>lombok</artifactId>
       <version>1.16.12</version>
</dependency>

第四步:踩坑检测
    1.检测java编译器类型,请选择javac,并去掉使用目标模块的jdk作为编译器的勾选.(要不然,编译是无法通过的)

2.JDK 一定要配置环境变量JAVA_HOME和PATH.

参考
https://blog.csdn.net/ghsau/article/details/52334762
https://www.cnblogs.com/amosetree/p/8856589.html




















作者: 一个人一座城0.0    时间: 2018-12-27 08:33
看一看。
作者: 不二晨    时间: 2019-1-3 10:11
奈斯




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2