• lombok的使用


    1、@NonNull  非空检验可以用@notNull代替,后者还可以有返回信息

    1 @NotNull(message = "参数不能为null")
    2     private boolean name;
    3     @NonNull
    4     private int age;

    2、@Cleanup---这个在jdk1.7之后,可以用try with resourse

    释放资源

    1 public void test(){
    2         try {
    3             @Cleanup OutputStream outputStream = new FileOutputStream("");
    4             outputStream.write(5);
    5         } catch (Exception e) {
    6             e.printStackTrace();
    7         }
    8     }

    反编译后

     1 public void test() {
     2         try {
     3             FileOutputStream e = new FileOutputStream("");
     4 
     5             try {
     6                 e.write(5);
     7             } finally {
     8                 if(Collections.singletonList(e).get(0) != null) {
     9                     e.close();
    10                 }
    11 
    12             }
    13         } catch (Exception var6) {
    14             var6.printStackTrace();
    15         }
    16 
    17     }

    try-with-resourse

    1 public void test(){
    2         try (OutputStream outputStream = new FileOutputStream("")){
    3             outputStream.write(5);
    4         } catch (Exception e) {
    5             e.printStackTrace();
    6         }
    7     }

    反编译后

     1 public void test() {
     2         try {
     3             FileOutputStream e = new FileOutputStream("");
     4             Throwable var2 = null;
     5 
     6             try {
     7                 e.write(5);
     8             } catch (Throwable var12) {
     9                 var2 = var12;
    10                 throw var12;
    11             } finally {
    12                 if(e != null) {
    13                     if(var2 != null) {
    14                         try {
    15                             e.close();
    16                         } catch (Throwable var11) {
    17                             var2.addSuppressed(var11);
    18                         }
    19                     } else {
    20                         e.close();
    21                     }
    22                 }
    23 
    24             }
    25         } catch (Exception var14) {
    26             var14.printStackTrace();
    27         }
    28 
    29     }

    3、@getter--@setter---@Accessors

    chain属性,可以想jq一样连续编程(默认是false)

     1 @Getter
     2 @Setter
     3 @Accessors(chain = true)
     4 public class TestDTO {
     5 
     6     private String name;
     7 
     8     private int age;
     9 
    10 }
     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String getName() {
     9         return this.name;
    10     }
    11 
    12     public int getAge() {
    13         return this.age;
    14     }
    15 
    16     public TestDTO setName(String name) {
    17         this.name = name;
    18         return this;
    19     }
    20 
    21     public TestDTO setAge(int age) {
    22         this.age = age;
    23         return this;
    24     }
    25 }

    4、@ToString

    1 @ToString
    2 public class TestDTO {
    3 
    4     private String name;
    5 
    6     private int age;
    7 
    8 }

    反编译

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String toString() {
     9         return "TestDTO(name=" + this.name + ", age=" + this.age + ")";
    10     }
    11 }

    ToString里面的属性 includeFieldNames = false

    1 @ToString(includeFieldNames = false)
    2 public class TestDTO {
    3 
    4     private String name;
    5 
    6     private int age;
    7 
    8 }

    反编译后--没有字段的名称

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String toString() {
     9         return "TestDTO(" + this.name + ", " + this.age + ")";
    10     }
    11 }

    第二个属性

    1 @ToString(exclude = "age")
    2 public class TestDTO {
    3 
    4     private String name;
    5 
    6     private int age;
    7 
    8 }

    反编译后--排除了exclude指定的属性

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String toString() {
     9         return "TestDTO(name=" + this.name + ")";
    10     }
    11 }

    第三个属性

    1 @ToString(of = "age")
    2 public class TestDTO {
    3 
    4     private String name;
    5 
    6     private int age;
    7 
    8 }

    反编译后--只出现了of = "age" 中的属性

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String toString() {
     9         return "TestDTO(age=" + this.age + ")";
    10     }
    11 }

    第四个属性

    1 @ToString(callSuper =true )
    2 public class TestDTO {
    3 
    4     private String name;
    5 
    6     private int age;
    7 
    8 }

    反编译后--输出了父类的toString

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String toString() {
     9         return "TestDTO(super=" + super.toString() + ", name=" + this.name + ", age=" + this.age + ")";
    10     }
    11 }

    第五个属性

    1 @ToString
    2 @Getter
    3 public class TestDTO {
    4 
    5     private String name;
    6 
    7     private int age;
    8 
    9 }

    反编译后--使用了有@getter注解后使用了get方法

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String toString() {
     9         return "TestDTO(name=" + this.getName() + ", age=" + this.getAge() + ")";
    10     }
    11 
    12     public String getName() {
    13         return this.name;
    14     }
    15 
    16     public int getAge() {
    17         return this.age;
    18     }
    19 }

    使用属性

    1 @ToString(doNotUseGetters = true)
    2 @Getter
    3 public class TestDTO {
    4 
    5     private String name;
    6 
    7     private int age;
    8 
    9 }

    反编译后---  (doNotUseGetters = true)--没有使用get方法,而是直接使用this.属性

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public String toString() {
     9         return "TestDTO(name=" + this.name + ", age=" + this.age + ")";
    10     }
    11 
    12     public String getName() {
    13         return this.name;
    14     }
    15 
    16     public int getAge() {
    17         return this.age;
    18     }
    19 }

    5、@EqualsAndHashCode

    1 @EqualsAndHashCode
    2 public class TestDTO {
    3 
    4     private String name;
    5 
    6     private int age;
    7 
    8 }

    反编译后

     1 public class TestDTO {
     2     private String name;
     3     private int age;
     4 
     5     public TestDTO() {
     6     }
     7 
     8     public boolean equals(Object o) {
     9         if(o == this) {
    10             return true;
    11         } else if(!(o instanceof TestDTO)) {
    12             return false;
    13         } else {
    14             TestDTO other = (TestDTO)o;
    15             if(!other.canEqual(this)) {
    16                 return false;
    17             } else {
    18                 String this$name = this.name;
    19                 String other$name = other.name;
    20                 if(this$name == null) {
    21                     if(other$name == null) {
    22                         return this.age == other.age;
    23                     }
    24                 } else if(this$name.equals(other$name)) {
    25                     return this.age == other.age;
    26                 }
    27 
    28                 return false;
    29             }
    30         }
    31     }
    32 
    33     protected boolean canEqual(Object other) {
    34         return other instanceof TestDTO;
    35     }
    36 
    37     public int hashCode() {
    38         boolean PRIME = true;
    39         byte result = 1;
    40         String $name = this.name;
    41         int result1 = result * 59 + ($name == null?43:$name.hashCode());
    42         result1 = result1 * 59 + this.age;
    43         return result1;
    44     }
    45 }
  • 相关阅读:
    SQL Server 2005 System Views Map
    SQL语句实现移动数据库文件
    重写系统存储过程:sp_spaceused
    MSSQL2005中的架构与用户
    根据时间段计算有n年n月n天
    Linux中的环境变量 (转)
    计算工龄,格式为n年n月n天
    学习递归CTE
    分区表应用例子
    根据备份文件直接还原数据库
  • 原文地址:https://www.cnblogs.com/shuaiandjun/p/7385443.html
Copyright © 2020-2023  润新知