常用的 lombok 注解

转载自: https://blog.csdn.net/mccand1234/article/details/53456411

常用的 lombok 注解

@EqualsAndHashCode:实现equals()方法和hashCode()方法 @ToString:实现toString()方法 

@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法 

@Setter:注解在属性上;为属性提供 setting 方法 

@Getter:注解在属性上;为属性提供 getting 方法 

@Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象 

@NoArgsConstructor:注解在类上;为类提供一个无参的构造方法 

@AllArgsConstructor:注解在类上;为类提供一个全参的构造方法 

@Cleanup:关闭流 @Synchronized:对象同步 @SneakyThrows:抛出异常

@Data

不使用 lombok 的方案

publicclassPerson {privateString id;privateString name;privateString identity;privateLogger log = Logger.getLogger(Person.class);publicPerson() {  }publicPerson(String id, String name, String identity) {this.id  = id;this.name = name;this.identity = identity;  }publicStringgetId() {returnid;  }publicStringgetName() {returnname;  }publicStringgetIdentity() {returnidentity;  }publicvoidsetId(String id) {this.id = id;  }publicvoidsetName(String name) {this.name = name;  }publicvoidsetIdentity(String identity) {this.identity = identity;  }}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

使用 lombok 的方案

@Data@Log4j@NoArgsConstructor@AllArgsConstructorpublicclassPerson{privateString id;privateString name;privateString identity;}

1

2

3

4

5

6

7

8

9

上面的两个 java 类,从作用上来看,它们的效果是一样的,相比较之下,很明显,使用 lombok 要简洁许多

org.projectlomboklombok

1

2

3

4

@Builder

不使用 lombok 的方案

publicclassExample {privateT foo;privatefinal String bar;privateExample(T foo, String bar) {this.foo = foo;this.bar = bar;        }publicstatic ExampleBuilderbuilder() {returnnewExampleBuilder();        }publicstaticclassExampleBuilder {privateT foo;privateString bar;privateExampleBuilder() {}publicExampleBuilderfoo(T foo) {this.foo = foo;returnthis;                }publicExampleBuilderbar(String bar) {this.bar = bar;returnthis;                }                @java.lang.OverridepublicStringtoString() {return"ExampleBuilder(foo = "+ foo +", bar = "+ bar +")";                }publicExamplebuild() {returnnewExample(foo, bar);                }        } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

使用 lombok 的方案 guava 16.0.1

@BuilderpublicclassExample{privateintfoo;privatefinalString bar; }

1

2

3

4

5

构造一个实例,属性不需要单独set 

Example.builder().foo(1).bar(“test”).build()

参考: 

http://projectlombok.org/features/index

http://blog.csdn.net/hack8/article/details/23790579 

http://blog.csdn.net/ethanq/article/details/7185610 [builder模式设计]

个人分类: java

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,399评论 19 139
  • http://liuxing.info/2017/06/30/Spring%20AMQP%E4%B8%AD%E6%...
    sherlock_6981阅读 16,138评论 2 11
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 13,147评论 0 13
  • 当你不知道怎么做动态按钮,或者动画时,想想它动态的状态和节奏速度,静态是把动态抽象化,或者瞬间定格化,这样的画面更...
    H__9阅读 1,345评论 0 1
  • 给自己的刷机过程做个记录,下次就不用到处找刷机教程 A2刷padavan K2P 银色,固件版本为A2 开启K2P...
    e20d9310ced3阅读 20,638评论 1 3