• lombok效率神奇使用


    Lombok效率神器

    标签(空格分隔): Java


    Lombok简介及使用

    Lombok 是一种 Java实用工具,可用来帮助开发人员消除Java的冗长,尤其是对于简单的Java对象(POJO), 它通过注释实现这一目的。一个标准的Java bean 一般具有若干属性,每个属性具有getter()和setter()方法,Lombok中也用到了注解,但是它并没有用到反射,而是通过在代码编译时期动态将注解替换为具体的代码。所以JVM实际运行的代码,和我们手动编写的包含了各种工具方法的类相同。
    如果想在开发时候使用lombok 简介化代码:

    IDEA plugin 中添加 lombok支持

    image_1dajjbjjcts95qc1qsafh2fr99.png-175.4kB

    添加maven依赖

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.16</version>
    </dependency>
    

    可以设置为provide ,使其仅在编译期起作用。
    maven库:@https://mvnrepository.com/artifact/org.projectlombok/lombok

    Lombok注解

    val: final 像动态语言一样,声明一个fianl的变量。
    var: 同JDK10
    @Data:注解在类上,将类提供的所有属性都添加get、set方法,并添加、equals、canEquals、hashCode、toString方法
    @Setter:注解在类上,为所有属性添加set方法、注解在属性上为该属性提供set方法
    @Getter:注解在类上,为所有的属性添加get方法、注解在属性上为该属性提供get方法
    @NotNull:在参数中使用时,如果调用时传了null值,就会抛出空指针异常
    @Synchronized 用于方法,可以锁定指定的对象,如果不指定,则默认创建一个对象锁定
    @Log作用于类,创建一个log属性
    @Builder:使用builder模式创建对象
    @NoArgsConstructor:创建一个无参构造函数
    @AllArgsConstructor:创建一个全参构造函数
    @ToString:创建一个toString方法
    @Accessors(chain = true)使用链式设置属性,set方法返回的是this对象。
    @RequiredArgsConstructor:创建对象, 例: 在class上添加@RequiredArgsConstructor(staticName = "of")会创建生成一个静态方法
    @UtilityClass:工具类
    @ExtensionMethod:设置父类
    @FieldDefaults:设置属性的使用范围,如private、public等,也可以设置属性是否被final修饰。
    @Cleanup: 关闭流、连接点。
    @EqualsAndHashCode:重写equals和hashcode方法。
    @toString:创建toString方法。
    @Cleanup: 用于流等可以不需要关闭使用流对象.
    

    例子

    1,使用lombok,代码可以简化为以下,自动生成属性的get set 方法。

    import lombok.*;
    @Setter
    @Getter
    
    public class Dog {
        String name; //默认为   friend级别
        int age;
    }
    
    

    @Accessors(chain = true):使用链式创建:

    @Setter
    @Getter
    @Accessors(chain = true)
    public class Dog {
        private String name;
        private Integer age;
    }
    
    public static void main(String[] args) {
        //使用@Accessors(chain = true)
        Dog dog = new Dog();
        dog.setName("A").setAge(1);
    }
    

    其他用法待续。

  • 相关阅读:
    Android:简单联网获取网页代码
    nginx搭建前端项目web服务器以及利用反向代理调试远程后台接口
    ElementUI使用问题记录:设置路由+iconfont图标+自定义表单验证
    vue中引入第三方字体图标库iconfont,及iconfont引入彩色图标
    Axios使用文档总结
    使用node中的express解决vue-cli加载不到dev-server.js的问题
    Vue脚手架(vue-cli)搭建和目录结构详解
    JS夯实基础:Javascript 变态题解析 (下)
    理解JS里的稀疏数组与密集数组
    JS夯实基础:Javascript 变态题解析 (上)
  • 原文地址:https://www.cnblogs.com/hit-zb/p/10850326.html
Copyright © 2020-2023  润新知