首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java开发笔记之Lombok使用@Data出现指针NullPointerException

0x00 概述 在代码运行过程中,使用lombok的@Data处报错NullPointerException指针异常。...0x01 问题表现 代码在IDEA中运行没问题,结果显示正常; 但是在打jar包后,运行就会指针异常,报错如下: Exception in thread "main" java.lang.NullPointerException...根据报错日志,定位到具体类的@Data代码处,该类由于排名需要,重写了compareTo方法,进行了排序计算; 0x02 解决过程 经搜索后这是Lombok使用@Data的一个大坑,详细见Lombok...使用@Data的大坑,指针错误; /** 原因是: @Data注解中有默认toString方法的重写,展示数据时,默认调用get方法的方式。...所以应该在传参或者类实例化时候进行过滤,对null值进行排除 */ 按照方法2解决后,发现jar包运行还是继续报NullPointerException指针异常,错误日志没有变化; 检查代码后发现,代码逻辑中仍有部分代码未进行

85930
您找到你想要的搜索结果了吗?
是的
没有找到

lombok的@Builder注解原理背后干了啥?

一个内部静态类,名为FooBuilder,其类型参数与静态方法相同(称为builder) 在构建器中:目标的每个参数有一个private非static 非 final 字段 在builder中:包私有的无参数构造器...它返回与目标返回相同的类型 有意义的toString()实现 在包含target的类中:一个builder()方法,该方法创建builder的新实例 如果该元素已存在,则每个列出的生成元素都将被静默跳过...这包括构建器本身:如果该类已经存在,则lombok会简单地开始在此现有类中注入字段和方法,除非要注入的字段/方法当然已经存在。...子类如何使用 @Build 注解? 父类 ? 子类 ?...同时在子类和全参数的构造器使用 @Builder 注解,最终的 build() 函数只返回了参的构造器创建的一个子类对象,因此属性“采用 builder 方式设置的 字段最终都丢失了。

2.4K20

推荐一款代码神器,代码量至少省一半!

如何使用Lombok? 1、安装插件和配置依赖 ? 如上图所示,Lombok支持所有主流的 IDE 开发工具及编译构建工具。...@Getter 和 @Setter 注解也可以单独使用字段上面,同样也会生成对应的 get/ set 方法及一个默认的构造方法。...@ToString 使用在类上,默认生成所有非静态字段以下面的格式输出,如: public String toString(){ return "Person(userName=" + getUserName...@RequiredArgsConstructor 用在类上,使用类中所有带有 @NonNull 注解和 final 类型的字段生成对应的构造方法。...} @NonNull 用在属性上,用于字段的非检查,如果传入到 set 方法中的值为,则抛出指针异常,该注解也会生成一个默认的构造方法。

59330

如何使用 TIMSDK 的自定义字段

前言介绍 为了方便不同用户的定制化及业务需求,IMSDK 目前提供了五个维度的自定义字段 "用户资料自定义字段","好友自定义字段","群成员维度自定义字段","群维度自定义字段" 均已键值对 Key-Value...形式存储并使用。...扩展相应的字段 Key,为相应的字段 Key 设置值 Value,这便是 IMSDK 字段使用方式 "消息自定义字段" 有些不一样,请翻至对应的章节详阅 控制台添加自定义字段 1)进入控制台打开 "...应用配置" image.png 2)切换至 "功能配置" 页 image.png 3)将会看到 "用户资料自定义字段","好友自定义字段","群成员维度自定义字段","群维度自定义字段" 4)点击...() 获取自定义字段的键值对; 适用场景 添加好友成功后,可以对好友进行备注,标记好友来源等字段可供使用,某些特殊场景下需要用到自定义字段,例如:星标好友,好友亲密度等一些场景 示例代码 写自定义字段

2.5K61

今天 1024,为了不 996,Lombok 用起来以及避坑指南

注解在字段上,则在 setter, constructor 方法中加入判,注意这里需要配合 @Setter、@RequiredArgsConstructor、@AllArgsConstructor 使用...注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法,同时可以指定生成的 setter 方法的访问级别 @Getter 使用方法同 @Setter,区别在于生成的是 getter...可以大大简化我们的代码 Lombok的优缺点 优点: 提高开发效率,自动生成getter/setter、toString、builder 等,尤其是类不断改变过程中,如果使用 IDEA 自动生成的代码...,我们则需要不停的删除、重新生成,使用 Lombok 则自动帮助我们完成 让代码变得简洁,不用过多的去关注相应的模板方法,其中 getter/setter、toString、builder 均为模板代码...自动生成的代码到底是如何产生的呢? 核心之处就是对于注解的解析上。JDK5引入了注解的同时,也提供了两种解析方式。

68430

优雅的Java工具库Lombok

,只需要集中注意力于字段field之中 Lombok简介 Lombok是一个非常实用的Java工具库,有效地简化Java代码的冗长。...它通过注解如@Data可以直接为Java bean在编译期动态地生成字段的getter/setter方法,使用注解@NoArgsConstructor 和@AllArgsConstructor 为Java...Lombok的构建支持maven和gradle,同时eclipse、myeclipse和idea等主流IDE也都和lombok兼容,所以可以放心大胆地使用Lombok,不用担心IDE的编译检查问题。...@Data注解 等同于@ToString, @EqualsAndHashcode, @Getter, @Setter和@RequiredArgsConstructor一起使用 @Value @Value...假如一个类有几十个字段,那么该如何设计这个类呢? 方法一:将几十个字段都添加在构造函数中。简单粗暴,而且在构造函数中为字段初始化也能够保证对象能够正确创建。

1.1K20

99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!

简介      在讲原理之前,我们先来复习一下 Lombok (老司机可以直接跳过本段看原理部分的内容)。      ...、toString、equals、hashCode 以及非判断等,都可以使用 Lombok 有效的解决。      ...Lombok 所有注解如下:      val:用在局部变量前面,相当于将变量声明为 final;      @NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为的校验,如果为,...也就是说,我们不应该无脑的使用 Lombok 对外暴露所有字段的 Getter/Setter 方法,因为有些字段在某些情况下是不允许直接修改的,比如购物车中的商品数量,它直接影响了购物详情和总价,因此在修改的时候应该提供统一的方法...但同时 Lombok 也存在这一些使用上的缺点,比如:降低了可调试性、可能会有兼容性等问题,因此我们在使用时要根据自己的业务场景和实际情况,来选择要不要使用 Lombok,以及应该如何使用 Lombok

53120

99%的程序员都在用Lombok,原理竟然这么简单?我也手撸了一个!|建议收藏!!!

简介 在讲原理之前,我们先来复习一下 Lombok (老司机可以直接跳过本段看原理部分的内容)。...、toString、equals、hashCode 以及非判断等,都可以使用 Lombok 有效的解决。...Lombok 所有注解如下: val:用在局部变量前面,相当于将变量声明为 final; @NonNull:给方法参数增加这个注解会自动在方法内对该参数进行是否为的校验,如果为,则抛出 NPE(NullPointerException...也就是说,我们不应该无脑的使用 Lombok 对外暴露所有字段的 Getter/Setter 方法,因为有些字段在某些情况下是不允许直接修改的,比如购物车中的商品数量,它直接影响了购物详情和总价,因此在修改的时候应该提供统一的方法...但同时 Lombok 也存在这一些使用上的缺点,比如:降低了可调试性、可能会有兼容性等问题,因此我们在使用时要根据自己的业务场景和实际情况,来选择要不要使用 Lombok,以及应该如何使用 Lombok

2.1K40

优雅的JAVA工具库LOMBOK

,程序员再也不需要去关注那些长长的方法,只需要集中注意力于字段field之中 Lombok简介 Lombok是一个非常实用的Java工具库,有效地简化Java代码的冗长。...它通过注解如@Data可以直接为Java bean在编译期动态地生成字段的getter/setter方法,使用注解@NoArgsConstructor 和@AllArgsConstructor 为Java...Lombok的构建支持maven和gradle,同时eclipse、myeclipse和idea等主流IDE也都和lombok兼容,所以可以放心大胆地使用Lombok,不用担心IDE的编译检查问题。...注解使用 Lombok的注解分为稳定版本和试验版本,这里主要介绍稳定版本,因为试验版本的支持目前和IDE不是很好 @Getter/@Setter注解 @Getter/@Setter注解的作用就是为字段添加...假如一个类有几十个字段,那么该如何设计这个类呢? 方法一:将几十个字段都添加在构造函数中。简单粗暴,而且在构造函数中为字段初始化也能够保证对象能够正确创建。

50950

MySQL 使用规范 —— 如何建好字段和索引

❞ 本文的宗旨在于通过简单干净实践的方式教会读者,如何更好地使用 MySQL 数据库。...二、库表规范 为了能让读者更加清晰地看到这些相关规范都是如何体现的,小傅哥这里准备了个大图,把库表字段和规范全部整合在一起,方便学习使用。...如下; 如上所列规范包括:建表相关规范、字段相关规范、索引相关规范、使用相关规范。 1. 建表相关规范 库名、表名、字段名,使用小写和下划线 _ 分割 库名、表名、字段名,不超过12个字符。...字段相关规范 整型定义中不显示设置长度,如使用 INT,而不是INT(4) 存储精度浮点数,使用 DECIMAL 替代 FLOAT、DOUBLE 所有字段,都要有 Comment 描述 所有字段应定义为...,MySQL内部需要进行特殊处理,表中有较多字段的时候,数据库性能下降严重。

58830
领券