lombok详解

@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法
作用于成员变量上,生成该成员变量的getter/setter方法

Getter(lazy=true) 懒加载

public @interface Getter {
    AccessLevel value() default AccessLevel.PUBLIC;

    Getter.AnyAnnotation[] onMethod() default {};

    boolean lazy() default false;

@ToString:作用于类,覆盖默认的toString()方法,可以通过includeFieldNames属性限定显示某些字段,通过exclude属性排除某些字段。callSuper 是否输出超类

public @interface ToString {
    boolean includeFieldNames() default true;

    String[] exclude() default {};

    String[] of() default {};

    boolean callSuper() default false;

@EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode
@NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。
构造器注解 作用于类上,用于生成构造函数(有staticName、access等属性) staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
@NoArgsConstructor, 生成无参构造器
@RequiredArgsConstructor, 生成包含final和@NonNull注解的成员变量的构造器;
@AllArgsConstructor: 生成全参构造器
@Data:作用于类上,是以下注解的集合:
@ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor
@Builder:作用于类上,将类转变为建造者模式

@Getter
@Setter
@Builder(toBuilder=true)
@ToString(callSuper=true,exclude = "birthDay")
@EqualsAndHashCode
public class BuilderBean extends BaseBean {
     @NonNull
    String name;

    Integer age;

    Date birthDay;


    public static void main(String[] args) {
        BuilderBean builderBean =  BuilderBean.builder().name("liuli").age(10).birthDay(new Date()).build();
        System.out.println(builderBean);
    }
}

@Log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解
@Cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
@SneakyThrows:可以对受检异常进行捕捉并抛出

public class LomBokTest {
    // 异常捕获
    @SneakyThrows
    public static void main(String[] args) {
            File file = new File("d:\\test.txt");
            //自动关闭 IO
            @Cleanup InputStream inputStream = new FileInputStream(file);
            @Cleanup InputStreamReader reader = new InputStreamReader(inputStream,"GBK");
            @Cleanup BufferedReader br = new BufferedReader(reader);
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }

    }
}

---- 编译后代码
public class LomBokTest {
    public LomBokTest() {
    }

    public static void main(String[] args) {
        try {
            File file = new File("d:\\test.txt");
            FileInputStream inputStream = new FileInputStream(file);

            try {
                InputStreamReader reader = new InputStreamReader(inputStream, "GBK");

                try {
                    BufferedReader br = new BufferedReader(reader);

                    String line;
                    try {
                        while((line = br.readLine()) != null) {
                            System.out.println(line);
                        }
                    } finally {
                        if (Collections.singletonList(br).get(0) != null) {
                            br.close();
                        }

                    }
                } finally {
                    if (Collections.singletonList(reader).get(0) != null) {
                        reader.close();
                    }

                }
            } finally {
                if (Collections.singletonList(inputStream).get(0) != null) {
                    inputStream.close();
                }

            }
        } catch (Exception var24) {
            var24.printStackTrace();
        }

    }
}

@Synchronized:作用于方法级别,可以替换synchronize关键字或lock锁,用处不大
@Value 如果我们需要一个不可变的对象类,那么就用该注解。它在编译是自动添加Getter、toString()、equals()、hashCode()以及一个全参的构造器。

参考 https://projectlombok.org/features/all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值