zoukankan      html  css  js  c++  java
  • Lombok常用注解

    @Setter 生成对象属性set方法
    @Getter 生成对象属性get方法
    @Getter(AccessLevel.NONE) 不生成对象属性get方法
    @Getter(AccessLevel.PROTECTED) 控制访问权限

    @NonNull 作用于方法上或者属性,用于非空判断,如果为空则抛异常

    @NoArgsConstructor 生成无参构造器

    @AllArgsConstructor 生成全参构造器

    @RequiredArgsConstructor 指定参数的构造函数
    @RequiredArgsConstructor
    public class User {
    
        private Integer age;
        private int salary;
    
        @NonNull
        private String address;
    
    }

    @ToString 作用于类,覆盖默认的toString()方法
    @ToString(exclude = {"age"}) 不包括某个字段
    @ToString(of = {"name"}) 只输出某个字段

    @EqualsAndHashCode 作用于类,覆盖默认的equals和hashCode, 作用于全部属性
    @EqualsAndHashCode(exclude = {"age"}) 不包括某个属性
    @EqualsAndHashCode(of = {"name"}) 只输出某个属性

    @Data 作用于类上,是以下注解的集合
    • @ToString
    • @EqualsAndHashCode
    • @Getter
    • @Setter
    • @RequiredArgsConstructor
     /** 
     * @see Getter
     * @see Setter
     * @see RequiredArgsConstructor
     * @see ToString
     * @see EqualsAndHashCode
     * @see lombok.Value
     */
    @Target(ElementType.TYPE)
    @Retention(RetentionPolicy.SOURCE)
    public @interface Data {}

    @Builder 作用在类上,建造者模式创建对象,实现链式调用赋值

    构造者模式:又称之为建造者模式

    • 场景:当一个bean类重载了多个构造方法时,并且参数随机使用时,考虑使用构造者模式
    • 谷歌的开源的protobuf协议生产的java bean赋值就是采用建造者模式

    使用案列:

    @Data
    @Builder
    public class User2 {
    
        private Integer id;
        private String name;
    
    }
    //建造者模式创建对象,实现链式调用赋值
    User2 boat = User2.builder().id(1).name("boat").build();
    System.out.println(boat);

    @Log / @Slf4j  作用于类上,生成日志变量, 用于记录日志(可以选择使用)

    如果不生效,记得检查下面的配置,另外重新更新下lombok插件,重启idea

    记得开启 开启annotion processing 

    步骤:File 》Settings 》 Build, Execution, Deployment 》 Compiler 》 Annotation Processors

     使用案列:

    @Slf4j
    public class MyService {
        public void show(){
            log.info("打印手机:{}","13539588064");
        }
    }

    生产的字节码:

    public class MyService {
        private static final Logger log = LoggerFactory.getLogger(MyService.class);
    
        public MyService() {
        }
    
        public void show() {
            log.info("打印手机:{}", "13539588064");
        }
    }
  • 相关阅读:
    AtCoder Beginner Contest 162 C~F
    题解 | 【CF896B】 Ithea Plays With Chtholly
    C# | C#快速入门
    Codeforces Round #618 (Div. 2) A~E
    Educational Codeforces Round 92 (Rated for Div. 2) A~C
    使用 Python 参与算法竞赛
    【网络爬虫学习】实战,爬取网页以及贴吧数据
    国内pip源提示“not a trusted or secure host”解决方案
    【网络爬虫学习】第一个Python爬虫程序 & 编码与解码详解 & Pythonの实现
    【网络爬虫学习】网页的基本构成
  • 原文地址:https://www.cnblogs.com/M87-A/p/15335534.html
Copyright © 2011-2022 走看看