简介:
Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
自动生成Getter/Setter方法
非空的声明,可用于校验参数,能帮助避免空指针
用法:
public class NonNullExample extends Something { private String name; public NonNullExample(@NonNull Person person) { super("Hello"); this.name = person.getName(); } }
类似于:
1 public class NonNullExample extends Something { 2 private String name; 3 4 public NonNullExample(Person person) { 5 super("Hello"); 6 if (person == null) { 7 throw new NullPointerException("person"); 8 } 9 this.name = person.getName(); 10 } 11 }
自动调用close方法,常用于文件读写
如:
@Cleanup InputStream in = new FileInputStream(args[0]); @Cleanup OutputStream out = new FileOutputStream("asdaads");
生成 toString()方法
参数(Args)构造器(constructor)
会使用所有非静态(non-static)和非瞬态(non-transient)属性来生成equals和hasCode,也能通过exclude注解来排除一些属性。
原文:https://www.cnblogs.com/monkay/p/10999930.html