lombok常用注解
2024-10-20 03:27:36
简介:
Lombok能以简单的注解形式来简化java代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量,一旦修改属性,就容易出现忘记修改对应方法的失误。
Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。出现的神奇就是在源码中没有getter和setter方法,但是在编译生成的字节码文件中有getter和setter方法。这样就省去了手动重建这些代码的麻烦,使代码看起来更简洁些。
@Data
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@Getter/@Setter
自动生成Getter/Setter方法
@NonNull
非空的声明,可用于校验参数,能帮助避免空指针
用法:
public class NonNullExample extends Something {
private String name; public NonNullExample(@NonNull Person person) {
super("Hello");
this.name = person.getName();
}
}
类似于:
public class NonNullExample extends Something {
private String name; public NonNullExample(Person person) {
super("Hello");
if (person == null) {
throw new NullPointerException("person");
}
this.name = person.getName();
}
}
@Cleanup
自动调用close方法,常用于文件读写
如:
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream("asdaads");
@ToString
生成 toString()方法
@NoArgsConstructor, @RequiredArgsConstructor and @AllArgsConstructor
参数(Args)构造器(constructor)
@EqualsAndHashCode(不做介绍)
会使用所有非静态(non-static)和非瞬态(non-transient)属性来生成equals和hasCode,也能通过exclude注解来排除一些属性。
优点:
- 能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,提高了一定的开发效率
- 让代码变得简洁,不用过多的去关注相应的方法
- 属性做修改时,也简化了维护为这些属性所生成的getter/setter方法等
缺点:
- 不支持多种参数构造器的重载
- 虽然省去了手动创建getter/setter方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度
最新文章
- 新手如何在gdb中存活
- mac上使用imagealpha命令对图片进行压缩批处理
- Android课程---Activity 的生命周期
- Source Insight 使用
- Hadoop平台提供离线数据和Storm平台提供实时数据流
- 1106关于解决erp单个商品同步的问题
- MyEclipse2014不支持jre1.8吗
- mysql 优化方法
- Zabbix实战-简易教程--正则(Regxp)
- Maven版本不一致的时候,使用指定版本进行编译
- 利用redis List队列简单实现秒杀 PHP代码实现
- Flask 应用上下文
- vitas高音
- leetcode16—3 Sum Closet
- 【linux】扒站命令之利用wget快速扒站利用wget快速扒站
- .net/c# RabbitMQ 连接断开处理-断线重连(转载)
- C#——JSON操作类简单封装(DataContractJsonSerializer)
- 每天一个linux命令(网络):【转载】route命令
- socket的protocal参数
- 亿级别记录的mongodb分页查询java代码实现