发布时间:2018-06-08作者:laosun阅读(1904)
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法,包括常用的get和set方法
我们在开发过程中,通常都会定义大量的JavaBean,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,当要对某个属性进行改变时,比如命名、类型等,都需要重新去生成上面提到的这些方法,那Java中有没有一种方式能够避免这种重复的劳动呢?
Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法.
使用方式,去maven仓库找一下相关的jar包
http://mvnrepository.com/artifact/org.projectlombok/lombok
然后选择一个版本,引入项目后,我们就可以使用了。如下所示:
在类上声明@Data即可,使用方式和之前的set get没有区别。.
import lombok.Data; @Data public class Users { private Integer id; private String name; }
public class Main { public static void main(String[] args) { Users user = new Users(); user.setId(1); user.setName("sunjs"); } }
官方地址:https://projectlombok.org/ ,github地址:https://github.com/rzwitserloot/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原理
了解了简单的使用之后,现在应该比较好奇它是如何实现的。整个使用的过程中,只需要使用注解而已,不需要做其它额外的工作,那玄妙之处应该是在注解的解析上。JDK5引入了注解的同时,也提供了两种解析方式。
不过现在开发工具都有快速生成注解的方式,也不会耽误多长时间的,如果只是简单的使用set get,那么我感觉用不用这个lombok都无所谓,还是根据自己的情况来使用吧。
版权属于: 技术客
原文地址: https://www.sunjs.com/article/detail/0baa3549816f45eabbdaaabe4b175d89.html
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。