• Lombok


    Lombok

    一种 Java 实用工具,可以帮助开发人员消除 Java 冗长的代码,尤其是针对简单的 Java 对象(pojo) ;它通过注解实现这一目的。

    maven:

    <dependency>
     	<groupId>org.projectlombokgroupId>
    	<artifactId>lombokartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

    1、标签

    注解用法备注
    @Getter
    @Setter
    @Getter(AccessLevel.PROTECTED) // 设置访问级别,默认public
    @Setter(AccessLevel.NONE) // 设置Setter访问级别为NONE表示不可Setter
    * 可加在类或者单独的属性上,@Getter()还可以设置访问级别
    * 只对成员变量产生效果,不对类级的static产生效果,final类型的只会产生Getter方法
    * 对于不想被访问的数据可以单独设置访问级别为 AccessLevel.NONE 就不会生成对应的Getter / Setter方法
    @ToString @ToString(exclude={"属性1", "属性2"}) // 排除不添加到ToString的属性
    @ToString(of={"属性1", "属性2"}) // 选择添加到ToString的属性
    @ToString(callSupper=true) // 调用父类ToString [ 在本类ToString之前追加父类的,并非只调父类 ]
    * 只能加在类上
    * exclude / of 属性值只有一个时可以省略大括号
    @EqualsAndHashCode @EqualsAndHashCode(exclude={"属性1", "属性2"}, of={"属性4", ”属性5“}) // 设置排除或者包含的判断条件 * 只能用在类上
    * 生成 equals(Object):boolean / canEquak(Object):boolean / hashCode():int 方法
    * equalsObject):boolean 会调用 canEquak(Object):boolean 进行判断,但是其自身就包含canEquak(Object):boolean的方法,所以实际上 canEquak(Object):boolean 代码是冗余的,但是可以单独调用(内部只有一个 return o instanceof 当前类)
    * hashCode():int 方法只会计算包含的属性的hashCode
    @NonNull public void show(@NonNull String 属性名) {...} // 编译后会在方法内先判断属性是否为null
    @NonNull private int 属性名; // 属性在使用的时候不能为null"
    * 可以加在方法上(判断当前属性是否为null) 、 字段上(在使用的时候不能为null) 、类上
    @NoArgsConstructor
    @RequiredArgsConstructor
    @AllArgsConstructor
    @NoArgsConstructor // 生成无参构造
    @RequiredArgsConstructor // 生成带参构造(包含@NonNull修饰的字段和final修饰的未赋值字段)
    @AllArgsConstructor // 生成所有参数的构造器
    * 只能用在类上
    * final 修饰的属性只能赋值一次,如果有无参构造则必须声明时赋值,没有无参可不赋值,不赋值时 @RequiredArgsConstructor 会对其产生赋值操作,否则@RequiredArgsConstructor 不会搭理final修饰的属性
    * +:@RequiredArgsConstructor (staticName="函数名") // 会把构造器设为private并生成一个设定的函数返回当前构造器构造的对象
    @Data 集成了 4 个注解:@Getter/@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor
    @Builder eq:在User类上注解@Builder

    实例化的时候可以通过建造者模式进行链式编程(函数编程)添加属性值 [ 流式编程 ]
    User user = User.builder().属性1(值).属性2.(值).build();
    * 只能用在类上
    * 为类生成复杂的构造器API
    @Log 为类生成一个 Logger 对象 log,在内部即可使用
    eq:类方法内调用log打印日志:log.info("内容")
    * 作用于类上
    val import lombok.val;
    val map = new HashMap(); // 在编译阶段才会确定 map 的类型,简化代码
    * Lombok 新增的关键字类型,类似 js 的 var
    @Cleanup @Cleanup
    InputStream is = new FileInputStream("path");
    * 作用于I/O流对象,实现自动关闭对象进行清理的作用,节省了大篇幅重复枯燥的冗余close代码
    @Value 将字段变成不可变类型(使用final修饰)
    同时包含@ToString、@EqualsAndHashCode、@AllArgsConstructor、@Getter
    * 作用于类上
    @SneakyThrows @SneakyThrows
    public void xxFunc(){...}

    @SneakyThrows(InterruptedException.class)
    public void xxFunc(){...}
    * 作用于方法上
    * 使用try catch来捕获Throwable异常,也可以设置要捕获的异常类型
    @Synchronized @Synchronized
    public void xxFunc(){...}

    @Synchronized("readLock")
    public void xxFunc(){...}
    * 给方法加同步锁

    2、流程

    在这里插入图片描述

  • 相关阅读:
    野火FPGA入门(3):简单组合逻辑
    程序调试介绍及其使用
    Linux环境配置(云服务器)
    【阿里云盘怎么】没办法分享压缩文件?
    【鸿蒙软件开发】ArkTS常用组件之Button
    无心剑英译朱熹《观书有感二首·其一》
    linux opensuse使用mtk烧录工具flashtool
    48V LDO三端稳压IC 60v 100V 300V电源降压芯片系统解决方案
    End-顺序表的基本操作
    C# Dictionary与List的用法区别与联系
  • 原文地址:https://blog.csdn.net/qq_30769437/article/details/126826607