• lombok插件


    IDE:

    IntelliJ IDEA 

    首先在设置的插件栏中安装lombok,然后使用如下的pom依赖:

    <dependency>
       <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    注解介绍:

    • @toString
    生成toString()方法,默认情况下,它会按顺序(以逗号分隔)打印你的类名称以及每个字段。
    可以这样设置不包含哪些字段@ToString(exclude = "id") / @ToString(exclude = {"id","name"})
    如果继承的有父类的话,可以设置callSuper 让其调用父类的toString()方法,例如:@ToString(callSuper = true)
    import lombok.ToString;
    @ToString(exclude = {"id","name"})
    public class User {
         private Integer id;
         private String name;
         private String phone;
    }
    //生成toString方法如下:
    public String toString(){
         return "User(phone=" + phone + ")";
    }
    • @Getter and @Setter
    你可以用@Getter / @Setter注释任何字段,让lombok自动生成默认的getter / setter方法。
    默认生成的方法是public的,如果要修改方法修饰符可以设置AccessLevel的值,例如:@Getter(access = AccessLevel.PROTECTED)
    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    public class User {
         @Getter(AccessLevel.PROTECTED) @Setter private Integer id;
         @Getter @Setter private String name;
         @Getter @Setter private String phone;
    }
    • @EqualsAndHashCode
    生成hashCode()和equals()方法,
    默认情况下,它将使用所有非静态,非transient字段。但可以通过在可选的exclude参数中来排除更多字段。或者,通过在parameter参数中命名它们来准确指定希望使用哪些字段。
    • @RequiredArgsConstructor
    @RequiredArgsConstructor会生成构造方法(可能带参数也可能不带参数),
    如果带参数,这参数只能是以final修饰的未经初始化的字段,或者是以@NonNull注解的未经初始化的字段
    @RequiredArgsConstructor(staticName = "of")会生成一个of()的静态方法,并把构造方法设置为私有的
    • @Data
    @Data 包含了@ToString,@EqualsAndHashCode,@Getter / @Setter和@RequiredArgsConstructor的功能

    以后有更多的使用到的会再做补充

    • @builder

    该注解可以将我们的一个bean类包装成一个构建者模式,编译时增加了一个Builder内部类和全字段的构造器。

    package com.pollyduan;
    
    import java.util.Date;
    
    import lombok.Builder;
    import lombok.Data;
    
    @Builder
    public class User {
        private Integer id;
        private String userName;
        private String password;
        private String email;
        private Integer age;
        private Date signupTime;
    
        public static void main(String[] args) {
            /*
             * User user=new User();//The constructor User() is undefined
             */
            User user = new User(1001, "pollyduan", "123456", "pollyduan@pollyduan.com", 30, new Date());
            //或者
            user=User.builder()
                    .age(30)
                    .userName("pollyduan")
                    .build();
            System.out.println(user);
        }
    }

    一般情况下我们使用log4j或者slf4j定义一个log会这样写:private static final Logger log = Logger.getLogger(getClass());

    但是在class上引入注解@Slf4j即可直接使用.

    @Slf4j  
    public class SectionVO {  
        public SectionVO() {  
            log.info("I'm sectionVO : {}", toString());  
        }  
    }  

    反编译SectionVO.class发现自动生成了

    private static final Logger log = LoggerFactory.getLogger(SectionVO.class);  

    @NonNull注解

    这个注解可以用在成员变量或成员方法或者构造方法的参数前面,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常。

  • 相关阅读:
    数据结构和算法关系
    x轴滚动
    常用Python第三方库简介
    devgridContral
    第一次线程使用经验总结
    调取图片出现的的内存泄露,导致大红叉
    IEEE754 处理数据变换
    c# 基础任务1
    Python-常用第三方库
    C#高性能大容量SOCKET并发(八):通讯协议
  • 原文地址:https://www.cnblogs.com/lilinzhiyu/p/7928665.html
Copyright © 2020-2023  润新知