CleanCode(1):Loombok

Lombok通过简单的注解,在编译后class中生成对应的实际代码,使得源码更整洁;

主要几个常用注解介绍:

@Data:用在类上,相当于同时使用了@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstrutor这些注解,对POJO类十分有用

@Getter/@Setter:用在属性上,不用自己手写setter和getter方法,还可指定访问范围

@ToString:用在类上,可以自动覆写toString方法

@EqualsAndHashCode:用在类上,自动生成equals方法和hashCode方法

@NonNull:用在方法参数前,会自动对该参数进行非空校验,为空抛出NPE(NullPointerException)

@Cleanup:自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出前会清理资源,生成try-finally的代码关闭流

@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor:用在类上,自动生成无参构造和使用所有参数的构造函数以及把所有@NonNull属性作为参数的构造函数
@Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。

@Value:用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法
@Builder:用在类、构造器、方法上,为你提供复杂的builder API方法
@SneakyThrows:自动抛受检异常,而无需显式在方法上使用throws语句
@Synchronized:用在方法上,将方法声明为同步的,并自动加锁
@Getter(lazy=true):可以替代经典的Double Check Lock样板代码
@Log:根据不同的注解生成不同类型的log对象,但是实例名称都是log,有多种可选实现类


具体样例:

1、@Accessors(chain = true) 使用链式设置属性,set方法返回的是this对象。

@Setter
@Getter
@Accessors(chain = true)
public class User {
    private String id;
    private String name;
    private Integer age;
}

public static void main(String[] args) {
   User user = new User().setId(1).setName("name").setAge(1);

猜你喜欢

转载自www.cnblogs.com/clarino/p/12032646.html
1
(1)
>&1