• Lombok的使用


    IDEA安装插件:

    添加Lombok IntelliJ插件以添加对IntelliJ的lombok支持:

    • 去 File > Settings > Plugins
    • 点击 Browse repositories...
    • 搜索 Lombok Plugin
    • 点击 Install plugin
    • 重启IntelliJ IDEA

    pom依赖:

            <!--@Data注解-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.16.10</version>
            </dependency>

    @NonNull:

    null检查看起来像if (param == null) throw new NullPointerException("param is marked @NonNull but is null");将被插入到方法的最顶层

     import lombok.NonNull;
    
    public class NonNullExample extends Something {
      private String name;
      
      public NonNullExample(@NonNull Person person) {
        super("Hello");
        this.name = person.getName();
      }
    }
    

      

    @Getter和@Setter

    让lombok自动生成默认的getter / setter。

     import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    
    public class GetterSetterExample {
      /**
       * Age of the person. Water is wet.
       * 
       * @param age New value for this person's age. Sky is blue.
       * @return The current value of this person's age. Circles are round.
       */
      @Getter @Setter private int age = 10;
      
      /**
       * Name of the person.
       * -- SETTER --
       * Changes the name of this person.
       * 
       * @param name The new value.
       */
      @Setter(AccessLevel.PROTECTED) private String name;
      
      @Override public String toString() {
        return String.format("%s (age: %d)", name, age);
      }
    }

    @EqualsAndHashCode :

    默认情况下生成非静态非final字段的equals和hashcode,可以使用@EqualsAndHashCode.Include 来标记使用哪些字段@EqualsAndHashCode(onlyExplicitlyIncluded = true),或者@EqualsAndHashCode.Exclude 来排除哪些字段,设置(callSuper=true)来确定是否使用超类字段。

     import lombok.EqualsAndHashCode;
    
    @EqualsAndHashCode
    public class EqualsAndHashCodeExample {
      private transient int transientVar = 10;
      private String name;
      private double score;
      @EqualsAndHashCode.Exclude private Shape shape = new Square(5, 10);
      private String[] tags;
      @EqualsAndHashCode.Exclude private int id;
      
      public String getName() {
        return this.name;
      }
      
      @EqualsAndHashCode(callSuper=true)
      public static class Square extends Shape {
        private final int width, height;
        
        public Square(int width, int height) {
          this.width = width;
          this.height = height;
        }
      }
    }

    @NoArgsConstructor,@ RequiredArgsConstructor,@ AllArgsConstructor

    生成构造器

     import lombok.AccessLevel;
    import lombok.RequiredArgsConstructor;
    import lombok.AllArgsConstructor;
    import lombok.NonNull;
    
    @RequiredArgsConstructor(staticName = "of")
    @AllArgsConstructor(access = AccessLevel.PROTECTED)
    public class ConstructorExample<T> {
      private int x, y;
      @NonNull private T description;
      
      @NoArgsConstructor
      public static class NoArgsExample {
        @NonNull private String field;
      }
    }

    @data

    @Data具有隐式@Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor

     import lombok.AccessLevel;
    import lombok.Setter;
    import lombok.Data;
    import lombok.ToString;
    
    @Data public class DataExample {
      private final String name;
      @Setter(AccessLevel.PACKAGE) private int age;
      private double score;
      private String[] tags;
      
      @ToString(includeFieldNames=true)
      @Data(staticConstructor="of")
      public static class Exercise<T> {
        private final String name;
        private final T value;
      }
    }

    @Slf4j和@Log

    等同于:private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());

    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleOther.class);

     import lombok.extern.java.Log;
    import lombok.extern.slf4j.Slf4j;
    
    @Log
    public class LogExample {
      
      public static void main(String... args) {
        log.severe("Something's wrong here");
      }
    }
    
    @Slf4j
    public class LogExampleOther {
      
      public static void main(String... args) {
        log.error("Something else is wrong here");
      }
    }
    
    @CommonsLog(topic="CounterLog")
    public class LogExampleCategory {
    
      public static void main(String... args) {
        log.error("Calling the 'CounterLog' with a message");
      }
    }
  • 相关阅读:
    [OC] UITabBarController
    ARC forbids explicit message send of release
    ios opensource YiYuanGou
    js添加创建节点和合并节点
    js数组反转
    JQuery中$.ajax()方法参数详解
    js按钮点击展开收起
    window.location.hash属性介绍
    js获取节点
    查询网址字符串参数用数组输出
  • 原文地址:https://www.cnblogs.com/jsersudo/p/10370911.html
Copyright © 2020-2023  润新知